![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
唐荣跃
谁的青春没遗憾
展开
-
jvm内存区域
jvm在执行程序过程中将内存分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁时间,有的区域随着虚拟机进程的启动而一直存在,有的区域则是依赖用户线程的启动和结束而建立和销毁。程序计数器。程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。java虚拟机栈。同程序计数器一样java虚拟机栈也是线程私有的,其生命周期与线程相同。栈用于存储局部变量表、操作数栈、动态连接、方法出口等。方法被调用直到执行完毕,就对应着一个栈帧从入栈到出栈。如果线程请求的栈深度大于虚拟机所原创 2021-02-06 18:54:30 · 124 阅读 · 1 评论 -
利用性能测试排查服务线上内存占用过高的问题续篇
内存占用率高原因排查(1)问题:服务器内存占用率居高不下(2)线索:TreeMap、ReentrantLock实例数高(excel导入组件用到)(3)原因:1、线程池线程中ThreadLocal存放的数据内存泄露。由于线程池中线程的生命很长,在线程池的线程中使用ThreadLocal必需要调用其clear方法清空TreadLocal中的数据释放内存;2、POI组件中的OPCPackage用完需调用close方法释放读写锁锁定的数据修复后压测效果:对相应功能压测10分钟后,抓取堆内存信息分析,无e原创 2020-12-01 11:19:02 · 512 阅读 · 4 评论 -
利用性能测试排查服务线上内存占用过高的问题
问题场景:生产1机,report服务进程内存占用率高,影响到下催记功能的可用性原因:实时导出excel文件的组件所用到的poi对象在jvm永久代内存中没有销毁,导致永久代内存无法回收解决方法:及时调用workbook的cose方法释放相关poi导出相关对象的引用关系排查工具:jmeter/jmap复现场景:首先,构造10万条数据。在电催任务详情压测环境模拟生产混合交易业务操作,同时登陆系统到电催任务详情页发起100笔电催任务详情报表导出。此时,通过jmeter观察服务器cup占用率与内存占用率的走势原创 2020-12-01 11:15:21 · 684 阅读 · 0 评论