我的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个实例”。看起来这是模板缓存。谢谢。 –