我在应用程序范围内有一个CFC作为单一对象。
其中一种方法用于海量数据处理,并定期导致“Java堆空间”错误。
编辑方法中的所有变量都是VAR范围的,因此在调用结束时不应将它们保留在对象范围内。
对于Java人来说这可能是一个有点愚蠢的问题,但我想知道 Java垃圾收集器如何清理CFC方法内存:仅在整个请求结束时,或者可能在每个方法/函数调用之后
第二个选项很有趣,因为它可以让我将我的大方法拆分为少数方法,作为可能的优化之一。
答案 0 :(得分:2)
众所周知,即使您尝试手动调用当前请求,coldfusion也不会执行垃圾收集。
答案 1 :(得分:1)
Java在没有对象引用后释放资源。你有单例应用程序范围对象,实际上意味着它永远不会释放它的实例变量和类变量。除非您在代码中手动执行此操作。您应该显示一些代码以获得有关如何优化代码的更多建议。