有没有办法在命令行上显示 Java 的 sessionCacheSize 的当前大小?

Is there a way to show the current size of Java's sessionCacheSize on commandline?

我想分析我的 Java 虚拟机当前使用的 ssl.sessionCacheSize 的大小。这个大小可以通过 javax.net.ssl.sessionCachSize JVM 设置来设置。是否有工具(如 jmap)显示 jvm 当前正在使用的当前 sessionCacheSize?

您可以通过使用 jmap 转储堆然后检查该转储中的 SSLSessionContextImpl 个对象来查看您的 jvm 使用的 ssl 会话缓存大小。

转储堆

jmap -dump:format=b,file=dump.hprof $PID

使用 Eclipse 的 MAT 检查 SSLSessionContextImpl 对象

  • 打开 dump.hprof 文件
  • 打开直方图视图
  • 打开检查器视图:Window -> 显示视图 -> 其他 -> 检查器(在内存分析器视图下)
  • 过滤 sun.security.ssl.SSLSessionContextImpl
  • 右键单击 -> 列出对象 -> 使用传出引用
  • Select 您的对象实例之一,您应该能够看到 cacheLimit 在检查器的属性选项卡中使用