JVM参数调整
调整heap参数和垃圾回收参数,需要通过压力测试和监控记录综合分析最有方案:
Id
参数组合
TransResponse Time
Throughput
Passed Transactions
Heap参数
GC参数
1
2
3
4
5
【案例】应用服务器运行一段Object实例数量达百万/千万级别,使用IBMHeapAnalyzer分析内存溢出时生成heapdump文件,发现89.1%的空间被基础对象占用(为从数据库加载大量记录导致):
在阿里“救了八年火”的架构师,大话系统架构优化项目
使用jprofiler监控后发现,大量未释放的VchBaseVo对象:
在阿里“救了八年火”的架构师,大话系统架构优化项目
查看工程代码,发现使用Hibernate的list()方法去查询,hibernatelist()方法优先查询缓存数据,如获取不到则从数据库中进行获取,从数据库获取到后Hibernate将会相应的填充一级、二级缓存,所以在应用服务器级别内存中出现百万级的对象占用内存问题,此为hibernate缓存的一个有效解决方案,但是在此处确实带来了性能问题,需要调用clear() 释放一级缓存占用的内存资源。 |