jvm 当javax.net.ssl.sessionCacheSize变满时会发生什么?

qmelpv7a  于 2023-08-05  发布在  Java
关注(0)|答案(1)|浏览(171)

我正在尝试分析我们在生产环境中运行的一个应用程序,目前javax.net.ssl.sessionCacheSize的值被设置为10000
我们在生产环境中使用java 17,在Java 17中,默认情况下,javax.net.ssl.sessionCacheSize的值设置为20480
我想知道当这个 sessionCacheSize 变满时会发生什么?是否触发GC事件(我们在Prod中使用G1GC)?或者应用程序响应时间会变长?或者应用程序不会接受新的连接,直到现有的连接被删除,缓存有一些空间来创建会话?

1szpjjfi

1szpjjfi1#

在Adoptium OpenJDK 17.0.7(以及其他OpenJDK衍生产品)中,会话缓存是在sun.security.util.MemoryCache中实现的,您应该能够在IDE中检查。这个类使用一个LinkedHashMap作为LRU(Least Recently Used)样式的缓存,并使用过期和引用跟踪(可选)。当调用任何方法时,它将删除任何只能软访问的缓存项,并且对于某些方法,它将删除过期的条目。
如果该高速缓存中添加新项后,缓存大小超过了配置的最大值(即使在删除过期项后),它也会删除最近最少使用的项,直到缓存大小在范围内。
这本身不会触发任何GC,但会产生一些最终将被收集的垃圾。它也不会阻止创建新会话。

相关问题