如何解决java.lang.OutOfMemoryError:java堆空间而不增加堆内存大小
我知道在如何解决java.lang.OutOfMemoryError:java堆空间而不增加堆内存大小,java,jvm,out-of-memory,heap-memory,Java,Jvm,Out Of Memory,Heap Memory,我知道在java.lang.OutOfMemoryError:java堆空间上有很多问题 像 但是没有一个链接不是我问题的正确答案 我们正在生成电子表格格式的报告,其中巨大的数据来自数据库端。我们将堆内存大小从2GB增加到4GB,没有任何用处 可能是因为数据库列中有一些额外的空间,所以我使用trim()方法修剪了所有getter和setter,这也没有用 例如: String s = "Hai "; s.trim(); 如果有人知道如何从Java编码方面解决这个问题,而不增加堆空间
java.lang.OutOfMemoryError:java堆空间
上有很多问题
像
但是没有一个链接不是我问题的正确答案
我们正在生成电子表格格式的报告,其中巨大的数据来自数据库端。我们将堆内存大小从2GB增加到4GB,没有任何用处
可能是因为数据库列中有一些额外的空间,所以我使用trim()
方法修剪了所有getter
和setter
,这也没有用
例如:
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
我们正在生成电子表格格式的报告,其中包含大量数据
来自数据库端
在这种用例中,您至少有两件事情需要研究,这可能会提高消耗的内存,但首先您必须确定罪魁祸首
本用例中监控工具识别的主要原因通常是:
1) 如果从数据库加载的数据被确定为内存的大消耗者,则可能不应该一次加载所有数据。将所有这些对象保留在内存中,同时根据这些数据创建电子表格可能会消耗大量内存
如果应用程序并行地用于其他用例,则为总体。 您应该将检索分为几个检索。
然后调用one来检索一些对象,填充spreadsheat并释放不再需要的这些对象。等等 2) 在电子表格创建过程中,如果使用库创建的对象电子表格被确定为内存的大消耗者,则您应该支持流式API或事件API,以便在将整个电子表格加载到内存中的API之上编写电子表格。
例如,POI提供了一个类似DOM的API:
XSSF
和一个流式API:SXSSF
您没有指定创建电子表格时使用的库,但这并不重要,因为使用的逻辑对于任何人都应该是相同的。
您可以提供更多的代码吗?尝试成批提供数据。我想要遇到这个问题,您必须一次性将所有数据从数据库发送到您的应用程序服务器。@notanormie我已经用示例代码编辑了这个问题。@alexd是的,我们通过调用store,一次性获取所有数据_proc@ArvindKatte,您的系统配置是什么?你是如何使用java堆的呢?我同意第一点。但是现在代码转移到了生产级别,现在我们无法正确更改数据结构。@ArvindKatte,好吧,如果您不更改任何内容,任何内容都不会得到修复。今天我们与客户进行了通话,让我们看看他们将放弃什么方法。您的第一种方法确实帮助了我,我正在创建一个临时变量,然后将值写入工作表,然后清除临时变量内存。客户同意这种方法。