java - toStringBuilder 导致问题

标签 java apache-commons

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

if(debug.isEnabled())
 logger.debug("Object="+MyObject);

其中 MyObjecttoString 方法中使用 ToStringBuilder

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)

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

最佳答案

不一定。所有这些错误都意味着堆空间即将耗尽,并且垃圾收集器正在放弃尝试回收空间 because it has run too much without reclaiming enough space 。事实上,它发生在代码中的那个位置并不一定意味着什么。可能是完全不同的东西占用了空间,但该调用再次启动了 GC,最终放弃了。您需要进行堆转储并在分析器中查看它,例如 YourKitVisualVM看看到底发生了什么。

关于java - toStringBuilder 导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15081736/

相关文章:

java - 具有组件固定宽度和高度的 GridLayout?

java - 使用 Java 和 SFTP 删除远程非空文件夹

java - HTTPClient StringEntity PUT 问题

java - Apache Commons HttpComponents 示例

java - Spring JPA 查询单列结果为通用类型?

java - 如何在 Android 中编写等待输入的 while 循环?

java - 如何获取哈希码原始值的值

java - 在 GUI 中与 JavaFX 网络服务交互

scala - 当最后一列名称包含空格时,Spark 无法读取 CSV

java - 处理来自 apache-commons exec 的输出