一、垃圾收集器:
1、jdk各版本对垃圾收集器的增强(优化)
jdk8:Removal of PermGen.
参考:
2、垃圾收集器调优
二、jvm内存调优:
1、工具:
Memory Analyzer (MAT)- 内存分析(获取并分析堆转储文件,如可用于分析内存泄漏)
(相关知识点:通常在触发heap dump之前会进行一次full gc)
gcviewer - 统计分析GC日志
可统计出minor gc、full gc次数,gc平均时间、平均每秒回收内存容量等(获取日志参数:- XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:mygclogfilename.gc)
此外,可用VisualVM进行jvm监控
三、GC知识在项目(代码)中的应用:
1、将不变的实例缓存
为了避免频繁的GC,可以将不变(一般使用频繁)的实例缓存了起来,而不是一遍一遍的创建它们。如Integer中将-128~127间对象缓存:
四、一些思考:
上面的故事告诉我们,真正厉害的人并非在问题发生后能够解决问题的人,而是能够运用所知事前避免问题的发生。我们对jvm知识的学习目的大概也是如此。