char []中保留的控制台输出会导致OutOfMemoryError

时间:2009-07-22 09:58:53

标签: java memory applet

我有一个内存不足的applet。堆转储分析显示罪魁祸首是traceMsgQueueThread拥有的char [],它包含java控制台输出的全部内容。随着日志消息被发送到控制台,直到最终applet耗尽内存,这会随着时间的推移而增长。

这似乎只发生在一些客户端,并且已经在1.5到1.6.0_10之前的各种JRE中出现过。我们所有的客户都使用相同的参数运行,即-Xmx256m和-XX:+ HeapDumpOnOutOfMemoryError,但只有少数会出现此问题。

关闭控制台似乎在一个实例中工作,但它不可重复,不幸的是,我们不需要记录。

有没有人见过这个,或者知道该怎么办?

2 个答案:

答案 0 :(得分:1)

在Windows下,您可以转到控制面板 - > Java-> Advanced-> Java控制台来禁用控制台。这显然必须在逐个机器的基础上完成,它甚至可能没有帮助,但我怀疑告诉它不启动控制台将阻止该线程被创建。

答案 1 :(得分:0)

我必须有一些选项来关闭该跟踪。尝试虚拟机配置或java调用中传递的一些参数。