2

CF2016 を使用して、このエラーが開発者環境と実稼働環境で発生していますが、それほど頻繁ではありません。

Metaspace null. The error ocurred on line -1.

いくつかのフォーラムを読むと、ガベージ コレクターのアイデアが得られ、このコードを実装してコレクターを強制することができました。

<cfset runtime = CreateObject("java","java.lang.Runtime").getRuntime()>
<cfset freeMemory = runtime.freeMemory() / 1024 / 1024>
<cfset totalMemory = runtime.totalMemory() / 1024 / 1024>
<cfset maxMemory = runtime.maxMemory() / 1024 / 1024>
<cfset usedMemory =  (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024>

<cfoutput>
    Used Memory: #Round(usedMemory)#mb<br>
    Free Allocated Memory: #Round(freeMemory)#mb<br>
    Total Memory Allocated: #Round(totalMemory)#mb<br>
    Max Memory Available to JVM: #Round(maxMemory)#mb<br>
</cfoutput>

<cfset clear = runtime.gc()> 

興味深いことに、ランタイム メモリには多くのスペースがあります (通常、スペースの半分は空いています) Metaspace Null

別のアプローチは、ロードされたクラスである可能性があります。おそらく、それらは自動的に破棄されていません。しかし、ロードされたものを見る方法が見つかりません。

これまでのところ、「解決策」はサーバーを再起動して、正常に動作できるようにすることです。最大 JVM ヒープ サイズを 1024MB に増やしてもエラーの頻度を減らすことができましたが、まだ発生しています。

そしてスタックトレース...ゴーストファイルの-1行にたどり着くのは難しいです! xD

ここに画像の説明を入力

Java バージョン: 1.8.0_112

ガベージ コレクタ: -XX:+UseParallelGC (デフォルト)

VM への引数 (読みやすいように改行しています)

java.args=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5006 -server 
-Xms256m 
-Xmx1024m 
-XX:MaxMetaspaceSize=192m 
-XX:+UseParallelGC 
-Xbatch 
-Dcoldfusion.home={application.home} 
-Djava.awt.headless=true 
-Duser.language=en 
-Dcoldfusion.rootDir={application.home} 
-Djava.security.policy={application.home}/lib/coldfusion.policy 
-Djava.security.auth.policy={application.home}/lib/neo_jaas.policy 
-Dcoldfusion.classPath={application.home}/lib/updates,{application.home}/lib,{application.home}/lib/axis2,{application.home}/gateway/lib/,{application.home}/wwwroot/WEB-INF/cfform/jars,{application.home}/wwwroot/WEB-INF/flex/jars,{application.home}/lib/oosdk/lib,{application.home}/lib/oosdk/classes 
-Dcoldfusion.libPath={application.home}/lib 
-Dorg.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER=true 
-Dcoldfusion.jsafe.defaultalgo=FIPS186Random 
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.JavaUtilLog 
-Djava.util.logging.config.file={application.home}/lib/logging.properties 
4

2 に答える 2