线上问题:
1.线上每天定时读取文件(大文件)成MAP,并加载入库,当执行完最后一批 批量提交sql 时,JVM堆内存没释放;
2.因为加了以下堆内存检测,所以,下一次处理文件时,发起不了新的线程处理新任务;
public boolean exceedSize() {
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean();
LOGGER.info("堆内存信息: " + memoryBean.getHeapMemoryUsage());
return memoryBean.getHeapMemoryUsage().getUsed() / 1000 > heapSizeThreshold; // heapSizeThreshold = 3G
}
3.JVM参数配置:-Xms6144M -Xmx6144M -XX:+UseG1GC -XX:ParallelGCThreads=5 -XX:G1HeapRegionSize=32m -XX:G1ReservePercent=10 -XX:MaxGCPauseMillis=800

问题认识:
1.当线程处理完,堆内存没有触发释放的条件
2.之前看过的把xmx和xms设置一致可以让JVM在启动时就直接向OS申请xmx的commited内存,

好处是:
1)避免JVM在运行过程中向OS申请内存
2)延后启动后首次GC的发生时机
3)减少启动初期的GC次数
4)尽可能避免使用swap space
坏处:
堆内存释放不及时

解决方案:
第一、设置-Xms6144M -Xmx6144M参数为:-Xms1024M -Xmx6144M
第二、在发起线程前,检测堆内存时,Object obj = new Object(); // 触发垃圾回收

其他:
上线前,应尽可能准确估计上线情况,做压力测试,使用jdk自带的监控工具多做分析;上线后,不断迭代优化;可以考虑设置MaxHeapFreeRatio/MinHeapFreeRatio参数

JVM堆内存释放不及时问题相关推荐

  1. JVM 堆内存设置原理

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  2. JVM堆内存与垃圾收集器

    3.1 谈谈Java中不同的引用类型? Java里有不同的引用类型,分别是强引用.软引用.弱引用和虚引用; 强引用:Object object = new Object();即使内存溢出了也不会回收这 ...

  3. java 堆内存使用情况_java语言:JVM堆内存使用率持续上升如何排查

    最近新版本发布后,在运行一段时间后程序突然无响应了,观察监控,发现JVM堆内存占用在某个时间点突然飙升,最终导致应用无响,希望对大家学习java语言有所帮助. 重启Tomcat后,应用恢复正常,并且后 ...

  4. JVM堆内存(新生代,老年代,Xms,Xmx)学习整理

    JVM堆内存 jvm堆内存主要分为新生代和老年代,当垃圾收集器触发GC的时候会对堆内存长时间没用的对象分代进行回收,新生代和老年代内存占比为1:2. 文章目录 JVM堆内存 新生代 1.Eden区 2 ...

  5. JVM堆内存介绍、垃圾收集算法、垃圾回收器汇总

    目录 1. JAVA堆内存是如何划分的 1.1 为什么移除永久代? 1.2 分代概念 1.3 为什么分代? 1.4 为什么survivor分为两块相等大小的幸存空间? 1.5 JVM堆内存常用参数 2 ...

  6. Elasticsearch JVM 堆内存使用率飙升,怎么办?

    1.引言 本系列文章介绍如何修复 Elasticsearch 集群的常见错误和问题. 这是系列文章的第四篇,主要探讨:Elasticsearch JVM 堆内存使用率飙升,怎么办? 第一篇:Elast ...

  7. 官方指定Jmeter配置JVM堆内存方式

    官方指定Jmeter配置JVM堆内存方式 文章目录 官方指定Jmeter配置JVM堆内存方式 1.概述 2.调整Jmeter堆内存 2.1.介绍官方推荐堆内存调整方法(jmeter在windows环境 ...

  8. 压测工具Ab(ApacheBench)使用入门,JVM堆内存调优及GC优化

    压测工具AB Ab(ApacheBench) 测试工具是 Apache 提供的一款测试工具,具有简单易上手的特点,在测试 Web 服务时非常实用. ab 一般都是在Linux上用. 安装非常简单,只需 ...

  9. JVM堆内存(heap)详解

    很好的一篇文章,转载了http://blog.51cto.com/lizhenliang/2164876?wx= JAVA堆内存管理是影响性能主要因素之一. 堆内存溢出是JAVA项目非常常见的故障,在 ...

最新文章

  1. Linux下的GitHub安装与简单配置教程
  2. 多个vue项目合并成一个_集美们,快看如何一步将多个PDF合并成一个PDF
  3. context:component-scan使用说明
  4. 【sprinb-boot】排除/不加载某些Bean
  5. 深度好文:云网络丢包故障定位,看这一篇就够了~
  6. java判空null前后,关于java:引不要再使用null判空了
  7. 20200701:力扣194周周赛上
  8. cron表达式每隔1小时一次_cron 每隔1小时50分钟_cron每小时执行一次
  9. Django之发送邮件
  10. java 处理 barCode(条形码)
  11. shiro salt
  12. 用于即使在太空中也能随时随地进行编码的移动应用程序
  13. ideal springboot class not found 解决办法
  14. IntelliJ IDEA 设置背景图片
  15. 162_附加145路由器项目中所用到的单链表操作_尾插、头插、遍历打印、查找ip、删除节点数据、释放全部、保存终端输入IP到文件、文件中的过滤IP插入到链表
  16. JavaScript循环语句for,while,与break,continue配合案例详解
  17. 几种主流数据库的压缩技术对比
  18. books list
  19. 欧姆龙 PLC CP1E 与电子称重仪表“柯力XK3101”Modbus RTU通信
  20. 无线组网技术 作业

热门文章

  1. 计算机一级考试试题excel,计算机一级考试模拟题(word、excel、ppt以及基础知识);...
  2. 太和二中计算机考试,太和二中网上阅卷系统|翰林金榜太和二中查分系统 网页版_最火手机站...
  3. 飞机步道(plane trails)
  4. 2021阿里云申请免费SSL证书最新流程
  5. 指针型函数实现插入字符
  6. 尼日利亚区块链专家认为加密货币可提振非洲经济
  7. Java 操作系统实验 时间片轮转法
  8. 第三方登录之Github登录篇
  9. java中jdk的下载与安装
  10. OpenWrt下使用iperf测试多跳网络性能