【发布时间】:2017-08-18 19:12:13
【问题描述】:
我知道java.lang.OutOfMemoryError: Java heap space 有很多问题。
但没有一个链接不能正确回答我的问题。
我们正在生成电子表格格式的报告,其中大量数据来自数据库端。我们将堆内存大小从 2 GB 增加到 4 GB,没有用。
可能是因为数据库列有多余的空间,所以我用trim()方法修剪了所有getters和setters,这也没用。
例如:
String s = "Hai ";
s.trim();
如果有人知道如何从 Java 编码方面解决这个问题,而不增加堆空间的大小。因为客户告诉过,他们不会再增加堆空间了。
调用此方法时出现异常
private CrossTabResult mergeAllListsSameNdc(CrossTabResult crt, CrossTabResult res) {
crt.setFormularyTier(crt.getFormularyTier()==null ? "":((crt.getFormularyTier().contains(crt.getListId())? crt.getFormularyTier(): crt.getListId()+crt.getFormularyTier()) +"~"+res.getListId()+res.getFormularyTier()));
crt.setFormularyTierDesc(crt.getFormularyTierDesc()==null ? "":((crt.getFormularyTierDesc().contains(crt.getListId())? crt.getFormularyTierDesc(): crt.getListId()+crt.getFormularyTierDesc()) +"~"+res.getListId()+res.getFormularyTierDesc()));}
由于机密,无法共享更多代码。通过查看上面的代码,如果你们有任何替代解决方案,请告诉我。我们基于相同的id 合并两个String。
【问题讨论】:
-
您能提供更多代码吗?
-
尝试批量带入数据。我想要遇到这个问题,您必须一次性将所有数据从数据库获取到您的应用程序服务器。
-
@notanormie 我用示例代码编辑了问题。
-
@alexd 是的,我们通过调用 store_proc 一次性获取所有数据
-
@ArvindKatte ,你的系统配置是什么?以及你使用 java 堆的内存是多少?
标签: java jvm out-of-memory heap-memory