JVM(lucee)Metaspace不斷增加

JVM(lucee)Metaspace不斷增加

我有一個正在生產中的 lucee (ColdFusion) 伺服器。

首先,我們遇到了作業系統記憶體耗盡的情況。我們將-Xmx2048m可用記憶體減少到一半並設定-XX:MaxMetaspaceSize=1000m

但過了一段時間,lucee的tomcat報了OutOfMemory錯誤,需要重新啟動。

由於元空間是在堆之外的,並且默認情況下不受限制,這表明元空間即將填滿。

然後我加入了一個正規則jcmd <pid> VM.metaspace來驗證這個假設。早上,我有:

 garbage-first heap   total 1572864K, used 959885K [0x0000000080000000, 0x0000000100000000)
  region size 1024K, 249 young (254976K), 18 survivors (18432K)
 Metaspace       used 99985K, capacity 102839K, committed 104996K, reserved 1114112K
  class space    used 7301K, capacity 8154K, committed 8320K, reserved 1015808K

晚上:

 garbage-first heap   total 1616896K, used 556546K [0x0000000080000000, 0x0000000100000000)
  region size 1024K, 25 young (25600K), 5 survivors (5120K)
 Metaspace       used 108125K, capacity 111035K, committed 113828K, reserved 1122304K
  class space    used 7509K, capacity 8463K, committed 8704K, reserved 1015808K

因此元空間每天成長約 8Mb!

我發現 JAXB 有一個導致此行為的問題,因此我嘗試透過添加來解決此問題-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true,但它沒有幫助,或者可能會使情況變得更糟。

我怎麼知道我的元空間到底被什麼填滿了?

答案1

相關內容