Java: jstat命令结果的一些问题
jstat -gccapcity命令里有下列三项,是什么意思?
CCSMN 最小压缩类空间大小
CCSMX 最大压缩类空间大小
CCSC 当前压缩类空间大小
jstat -gcnew <pid> 里下两项有何区别?
TT 持有次数限制
MTT 最大持有次数限制
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
应该是说64位机器上的 类指针压缩空间(Compressed Class Pointer Space)
参考:
什么是压缩类空间(Compressed Class space)?
首先压缩类空间是元数据空间metaspace的一部分.
在64位平台上, 指向类元数据的指针可以由32位偏移量 (带有 UseCompressedOops) 表示。这由命令行标志 UseCompressedClassPointers (默认启用) 控制。如果使用 UseCompressedClassPointers, 则类元数据的可用空间量将固定在 CompressedClassSpaceSize 数值上。如果 UseCompressedClassPointers 所需的空间超过 CompressedClassSpaceSize, 将抛出一个具有Compressed class space字样的 java.lang.OutOfMemoryError异常。
操作: 增加参数 CompressedClassSpaceSize 的大小以关闭 UseCompressedClassPointers选项。
注意: CompressedClassSpaceSize 的可接受大小有界限。例如, -XX:CompressedClassSpaceSize=4g, 超出可接受的界限将导致消息, 如CompressedClassSpaceSize=4294967296无效;必须介于1048576和3221225472之间。
注意: 有多种类元数据 -klass 元数据和其他元数据。只有 klass 元数据存储在由 CompressedClassSpaceSize 限定的空间中。其他元数据存储在 Metaspace 中。
https://docs.oracle.com/javas...
相应地:
什么是存活周期阈值(Tenuring threshold)?
TT: Tenuring threshold.
MTT: Maximum tenuring threshold.
Java 堆中的每个对象都有一个由垃圾回收 (GC) 算法使用的标头。新生代的空间收集器 (负责对象晋升) 使用此标头中的一些位来跟踪幸存的集合对象的数量 (32 位 JVM 使用4位, 64 位可能更多)。
在新生代的空间收集过程中, 每个对象都被复制。可以将对象复制到生存空间 (在新生代 GC 之前为空) 或老年代空间。对于被复制的每个对象, GC 算法增加了它的年龄 (幸存的数量), 如果年龄高于当前的 tenuring 阈值, 它将被复制 (晋升) 到老年代的空间。如果生存空间已满, 对象也可以直接复制到老年代空间。
对象按下面的步骤移动:
如果设置 MaxTenuringThreshold=0, 将立即升级所有对象。
MaxTenuringThreshold这个参数用于控制对象能经历多少次Minor GC才晋升到老年代.
TT与MTT的区别
在计算存活周期这个阈值时,hotspot会遍历所有age的table,并对其所占用的大小进行累积,当累积的大小超过了survivor space的一半时,则以这个age作为新的存活周期阈值(TT),最后取age和MaxTenuringThreshold(MTT)中更小的一个值。