码迷,mamicode.com
首页 > 其他好文 > 详细

JVM Heap认知

时间:2016-02-24 17:46:09      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:jvm 介绍、优化

一、JVM Heap分为三部分:新生代、老年代、永久代;


新生代:用于存放JVM新分配的java对象;

老年代:新生代中经过垃圾回收没有回收掉的对象将被copy到老年代;

永久代:存放Class、Method元信息,也就是反射对象,一般设置为128M足够,设置原则是预留30%空间。


二、GC的引发:


1、新生代拥有2个线程;

(1)当新生代的Eden代满了引发普通GC,仅仅回收新生代;

(2)新生代空间不足时,会把存活的对象转移到老生代。

2、老年代:当老年代满时引发Full GC,它将会同时回收新生代、老年代。

3、永生代:当永生代满时引发Full GC, 它将会把Class 、Method元信息卸载。


三、何原因导致OutOfMemoryException


1、JVM98%代时间都在内存回收;

2、每次回收的内存小于2%。

满足这两个原因才会处发。


四、性能优化

希望达成的目标:

1、GC的时间足够的小;

2、GC的次数足够的少;

3、发生Full GC的周期足够的长。


需要做的事情:

1、建少使用全局变量和大对象;

2、调整新生代的大小到最合适;

3、设置老年代的大小为最合适;

4、选择合适的GC收集器。


优化方面:

1、线程池:解决用户响应时间长的问题;

2、链接池;

3、JVM启动参数:调整各代的内存比例和垃圾回收算法,提供吞吐量;

4、程序算法:改进程序逻辑算法提高性能。


五、JVM监控

java自带的监控工具比较多,下面仅使用了2种:

1、jstat -gcutil [java PID] 1000(间隔毫秒数) 5(打印的条数);例子:jstat -gcutil 25 1000 5

技术分享

2、jmap -heap 25

技术分享






JVM Heap认知

标签:jvm 介绍、优化

原文地址:http://lokihjl.blog.51cto.com/10642254/1744654

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!