1方法区 (线程共有)
2堆 (线程共有) 堆内存不足(-Xmx -Xms) Java heap space
3本地方法栈(运行本地方法 Native方法) unable to create native thread(线程数超过了操作系统的限制) 给虚拟机分配内存过大(-Xmx,-MaxPermSize)
4虚拟机栈(运行JAVA方法) 栈内存不够(-Xss)
5程序计数器
6持久代 (方法区 常量池 非堆的部分NoHeap) PermGen space 方法区(持久代)使用过大 应用加载class过大,字节码生成技术使用过多 (-XX:PermSize,-XX:MaxPermSize) 回收“性价比”低。废弃常量和无用的类。
分代回收 Eden Survivor1 Survivor2
年轻代 YongGC
老年代 Major GC 也叫Full GC(老年代存储的对象比年轻代多得多,而且不乏大对象,对老年代进行内存清理时)
分代收集 年轻代:停止复制算法中 Eden区与Survivor的比例较大,HotSpot默认是 8:1:1
(代表Eden:Survivor1:Survivor2=8:1:1.)
老年代:标记-整理算法:标记出仍然存活的对象(存在引用的),将所有存活的对象向一端移动,以保证内存的连续。
JVM参数说明:http://www.cnblogs.com/wenfeng762/archive/2011/08/14/2137810.html
参考:
1 http://www.cnblogs.com/zhguang/p/3257367.html