toStringBuilder导致问题

rbh*_*sar 2 java apache-commons

我正在运行多线程导入,运行大约1-2个小时.并在导入之前,将数据放入表中.我正在查

if(debug.isEnabled())
 logger.debug("Object="+MyObject);
Run Code Online (Sandbox Code Playgroud)

其中MyObject使用ToStringBuildertoString方法.

java.lang.OutOfMemoryError: GC overhead limit exceeded
        at java.util.Arrays.copyOfRange(Arrays.java:2694)
        at java.lang.String.<init>(String.java:203)
        at java.lang.StringBuffer.toString(StringBuffer.java:561)
        at org.apache.commons.lang3.builder.ToStringBuilder.toString(ToStringBuilder.java:1063)
Run Code Online (Sandbox Code Playgroud)

我认为toStringBuilder导致了这个问题.我对么?如果是,有什么方法可以解决这个问题?

Rya*_*art 5

不必要.所有这些错误意味着你几乎没有堆空间,并且垃圾收集器放弃了尝试回收空间,因为它运行太多而没有回收足够的空间.它在代码中发生的事实并不一定意味着什么.这可能是一个完全不同的东西占用了空间,但是当它最终放弃时,那个召唤再次启动了GC.你需要进行堆转储并在像YourKitVisualVM这样的分析器中查看它,看看究竟发生了什么.