Java中old space与old generation的区别及jstat指标解析
jstat -gcoldcapacity 中 OGC 与 OC 的区别解析
先看你给出的jstat -gcoldcapacity命令输出:
$ jstat -gcoldcapacity 57208 OGCMN OGCMX OGC OC YGC FGC FGCT CGC CGCT GCT 0.0 1048576.0 717824.0 717824.0 833 6 3.601 387 44.317 93.700
根据官方文档的定义:
- OGC:当前Old Generation(老年代)的容量,单位为KB
- OC:当前Old Space(老空间)的容量,单位为KB
核心区别
Old Generation是逻辑概念——它指代JVM分代GC模型中,专门存放经历多轮Young GC后仍存活对象的逻辑区域,通常只有Full GC时才会对它进行标记回收。
Old Space则是物理内存层面的对应区域,是JVM为老年代分配的实际内存块。
为何OpenJDK 21默认配置下两者数值一致?
在OpenJDK 21的默认GC配置(如G1GC)中,老年代的逻辑分区和对应的物理内存空间是一一绑定的,没有额外的内存细分、共享或动态拆分机制,因此两者的容量数值会完全相同。只有在一些特殊的GC配置或自定义内存布局场景下,才可能出现两者数值不一致的情况。
内容的提问来源于stack exchange,提问作者Basilevs
相关产品推荐
相关产品推荐

