Coldfusion组件消耗JVM内存。

4

我正在尝试一些堆大小管理建议,但这是一个缓慢的过程... 我想发布一些代码,希望有人能提出建议...

我正在对场景进行数据分析-分析有点复杂,但不是很严重。 然而,当我尝试运行一个场景对1000个不同的数据集进行分析时...我的服务器崩溃了。

我有100000个数据集的样本大小-需要对这个集合运行场景- 我发现我可以循环10-20个设置,然后系统就会自我消耗...... JVM内存爬升到最大。

我必须清除组件缓存并从服务器监视器运行GC以使内存使用量降低,但当我再次运行循环时-它很快就失控了。

<cfscript>
x = 20;
obj = createObject( 'component', 'b' );

d = obj.insertData( FORM.DATA );
s = obj.insertScenario( FORM.SCENARIO );

Xscenarios = obj.getXscenarios( s, d, x );
// analyze x 
for( i=1; i <=arrayLen( Xscenarios ); i++ ) {
    a = obj.analyze( Xscenarios[i], s );
}
</cfscript>

每个分析需要约3秒钟时间....

有什么建议吗?

我如何在每个循环后强制执行GC?我需要这样做吗?应该吗?


2
你是否有 analyze() 函数的一些代码? - James A Mohler
James,我想做分析,但代码很复杂...可能是罪魁祸首,但内存泄漏显然在CF10中得到了修复(我升级了我的开发系统,因为我在调整某些设置时搞砸了它)。一旦我让服务器监视器在10中正常工作,我会详细查看它。 - j-p
1个回答

0

Java 不建议强制调用 GC。尝试优化你的代码和查询,可能会占用你的内存,或者你可以通过在容器配置中定义 -Xms256m 和 -Xmx512m 属性来管理你的 JVM 大小。


请根据您的系统规格进行配置,我认为您定义的JVM属性超出了可用的系统内存。 - Noman ali abbasi
a) 如果您杀死了服务器,可以使用备份的 jvm.xml 副本将其恢复。 b) ColdFusion 出厂时为 JVM 提供的内存太少了,因此增加内存的建议是正确的。 c) 我们需要看到您认为会消耗大量内存的代码。 - James A Mohler
谢谢 - 我只是升级到了CF10,并进行了全新安装。Tomcat服务器似乎处理事情更好 - 代码运行良好。我的生产服务器仍然是9 - 但我可以在我的开发机上进行所有分析,所以... - j-p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接