我正在运行 Tomcat 应用程序(由 Hibernate + EhCache 组成)。它是典型的 ORM webapp,不应该创建很多类。但是,本机内存跟踪说“不”。
在过去的 24 小时内,我的 webapp 在 Metaspace 中平均每小时创建约 1 个新课程,最高每小时 11 个课程,最高 4 小时没有创建课程。
所以,我从 7449 课开始,24 小时后我有 7481 课。诱导 full GC 后,类的数量可以减少 0-2,但总体保持不变。
所以
如果类是延迟加载的,我如何估计要在本机内存中创建的类的总数?
- 我知道 Hibernate 创建代理类。有没有办法预测这些代理类计数?
- 如何强制 JVM 急切地加载所有类?
如何记录哪些新类加载到元空间?
我的配置:
Server version: Apache Tomcat/8.0.28
OS Name: Linux
OS Version: 3.14.34-27.48.amzn1.x86_64
Architecture: amd64
JVM Version: 1.8.0_71-b15
JVM Vendor: Oracle Corporation
JVM flags: -Xms512m -Xmx2G -XX:+UseG1GC -XX:NativeMemoryTracking=summary -XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics
Hibernate 4.3.1