我正在運行Tomcat應用程序(它由Hibernate + EhCache組成)。這是典型的ORM webapp,不應該創建大量的類。但是,Native Memory Tracking說「不」。爲什麼class 8 metaspace在Java 8中隨時間增加?
在過去24小時內,我的webapp平均每小時在Metaspace創建約1個新課程,每小時創建11個課時,並且高峯4個小時,而不創建課程。
所以,我開始了7449課,24小時後我有7481課。 誘導完全GC後,類數可以減少0-2,但總體保持不變。
所以
如果類被延遲加載的,我怎麼能估計的類的總數在本機內存中創建?
- 我知道Hibernate創建代理類。有沒有辦法預測這些代理類的數量?
- 如何強制JVM急切地加載所有類?
我該如何記錄哪些新類加載到Metaspace?
我的配置:
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