[Home]   [TOC]

Study_Java_HotSpot_Memory  
HotSpot Memory Study
Updated Jan 22, 2014 by jht5...@gmail.com

方法栈&本地方法栈 线程创建时产生,方法执行时生成栈帧
方法区 存储类的元数据信息 常量等
java代码中所有的new操作
native Memory(C heap) Direct Bytebuffer JNI Compile GC

Young Generation 即图中的Eden + From Space + To Space
Eden 存放新生的对象
Survivor Space 有两个,存放每次垃圾回收后存活的对象
Old Generation Tenured Generation 即图中的Old Space 主要存放应用程序中生命周期长的存活对象

Permanent Generation 保存虚拟机自己的静态(refective)数据;主要存放加载的Class类级别静态对象如class本身,method,field等等;permanent generation空间不足会引发full GC(详见HotSpot VM GC种类)
Code Cache 用于编译和保存本地代码(native code)的内存;JVM内部处理或优化




想跟踪Java程序中哪里new对象最多,有什么好办法。
在最新的Oracle JDK7里自带的Java Flight Recorder正好能满足这种需求。只要看AllocObjectInNewTLAB和AllocObjectOutsideTLAB就能几乎无额外开销得到一个非精准的profile。虽说非精准但很多时候已经足以解决问题。用起来超方便。

参考资料

[1]. http://www.cnblogs.com/redcreen/archive/2011/05/04/2036387.html