JVM29——GC调优方向与代码复核
(1)调优领域
- 内存
- 锁竞争
- cpu占用
- io
(2) 调优目标
- 高吞吐量(科***算):ParrellelGC
- 还是低延迟(互联网项目):CMS、G1、ZGC
- hotspot外的虚拟机:zing...
(3) 代码复核
查看full gc前后的内存占用,考虑以下几个问题。
- 数据量是不是太多?下面代码就会加载大量数据到堆内存中。
resultSet = statement.executeQuery("select * from xxx");
应该改为:
resultSet = statement.executeQuery("select * from xxx limit n");
- 数据表示太臃肿?
- 对象用到什么数据项查什么数据项
- 对象大小 Integer24byte ,int24byte
- 是否存在内存泄漏?如:
static Map map = new HashMap();
对长期存活的对象建议使用弱引用、软引用。
对于缓存类型的数据建议使用第三方缓存实现,如redis。
java全栈日日学 文章被收录于专栏
java全栈每日必学,不要高估自己一年能做的事,不要低估自己十年能做的事