JVM的内存结构

http://blog.51cto.com/zero01/2150115

JVM的内存结构_第1张图片

CCS:这个区域存放 32位指针的Class,也就是压缩类空间,
默认开启 禁用写 -UseCompressedClassPointers
没启用就没有这个空间,开启默认1G
-XX:CompressedClassSpaceSize 设置大小
每个对象都要指向自己class的指针,64位下这个指针是64位的,考虑性能 可以把指针用32位, 如果启用就会存放到CCS
CodeCache:存放JIT编译后的本地代码以及JNI使用的C/C++代码
JVM的内存结构_第2张图片

vi ./bin/catalina.sh



jps -l查看当前Java进程


JVM的内存结构_第3张图片

CCSC整个
CCSU已用

禁用CCS后

完全以编译的方式执行 就是运行过一次就变成native


完全以解释的方式执行
可以看到Metaspace 变小了 变小的部分就是CodeCache


JVM的内存结构_第4张图片

-Xms -Xmx 堆内存:最小最大

-XX:NewSize 新生代大小
-XX:MaxNewSize

-XX:NewRatio new:old
-XX:SurvivorRatio eden:survivor

-XX:MetaspaceSizeMetaspace的大小
-XX:MaxMetaspaceSize

-XX: - UseCompressedClassPointers 关闭CCS
-XX:CompressedClassSpaceSize设置CCS空间的大小,默认是一个G:

-XX:InitialCodeCacheSizeCodeCache的初始大小
10.设置CodeCache的最大值:

-XX:ReservedCodeCacheSize
11.设置多大的对象会被直接放进老年代:

-XX:PretenureSizeThreshold
12.长期存活的对象会被放入Old区,使用以下参数设置就可以设置对象的最大存活年龄:

-XX:MaxTenuringThreshold
注:如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论,linux64的java6默认值是15:

13.设置Young区每发生GC的时候,就打印有效的对象的岁数情况:

-XX:+PrintTenuringDistribution
14.设置Survivor区发生GC后对象所存活的比例值:

-XX:TargetSurvivorRatio

你可能感兴趣的:(JVM的内存结构)