jdk Compressed Class Space 缺失

编译器工具链 编译器工具链 1033 人阅读 | 1 人回复 | 2021-04-16

本帖最后由 TecSupport 于 2021-4-16 09:24 编辑
一、问题描述 在 使 用 CPU( 申 威 SW3231/32) 、 操 作 系 统 ( 银 河 麒 麟 申 威 专 用 版 SVS2.28.2) 、JDK(1.8.0-h9475)时,中间件使用了 JVM 内存监控接口,调用了 JMX 的 MemoryPool 的Compressed Class Space 接口获取内存数据。但在该环境发现 JMX 内并无此接口,我们对比openjdk 与 oracle jdk 与搭载了龙芯/兆芯/鲲鹏的机器时并没有发现这个情况。



当前服务器JDK版本:



二、排查过程
1. 排查其他环境 JDK排 查 了 Oracle JDK 1.8.0_144 、 Openjdk 1.8.0_242 以 及 国 产 化 服 务 器 上 的openjdk1.8.0.242(ky10.aarch64)、openjdk1.8.0.212(ky10.mips64el)、openjdk1.8.0.242(x86_64)上的 JDK 都有 Compressed Class Space 接口。

2. 排查申威服务器上其他 JDK我们排查了神威服务器上自带的多个 JDK,尝试之后都不可以,都没有 Compressed ClassSpace 接口。


三、复现方法
Jconsole 连接本地 jmx使用 JDK 自带的 jconsole 工具连接 jmx 服务查看是否有 Compressed Class Space 接口,在 jdk 的 bin 目录下执行./jconsole,选择本地进程:


选择 MBean,选择 java.lang 即可查






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

回答|共 1 个

TecSupport

发表于 2021-4-16 09:28:00 | 显示全部楼层

jconsole看不到Compressed class space的解决方案:

因为swjdk默认对UseCompressedOops和CompressedClassPointers两个选项是关闭的,因此,如果需要在jconsole中监控Compressed class space空间,则需要手动打开这两个选项开关
jconsole -J-XX:+UseCompressedOops -J-XX:+UseCompressedClassPointers
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则