我的CF 8服務器上出現「OutOfMemoryError:PermGen space」錯誤。 在我的應用程序中,1000個模板被加載到相同的局部變量中(用於測試目的),因此一旦下一個加載,之前的一個應該可用於GC - 但這不會發生。 我得到了內存轉儲,並用jhat查看它。我看到的是它加載了1000個模板,每個模板都有自己的TemplateClassLoader實例。在TemplateClassLoader中,它自身有一個對所有TemplateClassLoader實例的靜態引用(同樣來自jhat)。可能因爲這個原因,這些實例被保存在內存中,所以類對象不能成爲permgen中的GC。Coldfusion TemplateClassLoader是否支持類加載器實例?
只有當我在模板中調用cfscript函數後,纔會發生這種「內存佔用」。如果我只加載模板但不調用該函數,則類對象將被GCed並且不會發生OOM錯誤。
任何想法在TemplateClassLoader上(出現)靜態引用發生了什麼?
我碰到這個尋找的理由來爲什麼Eclipse的MAT說「的‘coldfusion.runtime.TemplateClassLoader’佔據242105472個字節3421個實例」。看起來這是模板緩存。謝謝。 –