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

Java 保留在char[]中的控制台输出导致OutOfMemoryError,java,memory,applet,Java,Memory,Applet,我有一个小程序,它的内存一直不足。堆转储分析表明,罪魁祸首是traceMsgQueueThread拥有的一个char[],它包含java控制台输出的全部内容。随着日志消息被发送到控制台,这会随着时间的推移而增加,直到小程序内存耗尽为止 这似乎只发生在少数客户机上,并且在从1.5到1.6.010的各种JRE上都可以看到。我们的所有客户机都使用相同的参数运行,即-Xmx256m和-XX:+HeapDumpOnOutOfMemoryError,但只有少数客户机出现此问题 关闭控制台似乎在一个实例中起作

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

这似乎只发生在少数客户机上,并且在从1.5到1.6.010的各种JRE上都可以看到。我们的所有客户机都使用相同的参数运行,即-Xmx256m和-XX:+HeapDumpOnOutOfMemoryError,但只有少数客户机出现此问题

关闭控制台似乎在一个实例中起作用,但它不可重复,不幸的是,这不是一个选项,因为我们需要日志记录


以前有人看到过这种情况吗,或者知道该怎么办吗?

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

在Windows下,您可以通过进入“控制面板”->“java”->“高级”->“java控制台”禁用控制台。不过,这显然必须在一台机器一台机器的基础上完成,甚至可能没有帮助,但我怀疑告诉它不要启动控制台会阻止线程的创建。

这似乎在一个实例中起作用,但根据客户端的说法,这是不可重复的,不幸的是,这不是一个选项,因为我们需要日志记录。