数据结构能力

时间:2013-08-05 18:52:10

标签: java data-structures

我有一个由22个字段组成的简单POJO,可以从几个CSV文件中读取。 读者线程逐行读取文件,每行包含这22个字段的值并构造POJO。每个对象都存储在ConcurrentLinkedQueue中。

捕获的总线数约为300万。我在Eclipse中运行我的程序,在双CPU机器中,每个机器都有8个内核。我使用-Xms1024m -Xmx1024m VM参数。

问题是,在读取近800000行后,为每行构建POJO并将POJO提供给队列时,我得到堆空间的OutOfMemory错误。

我的问题是这些很多对象是否可以存储在队列中而不会出现OutOfMemory问题?

2 个答案:

答案 0 :(得分:0)

嗯,你只是在消耗所有可用的内存。在抛出OutOfMemoryError之前,JVM会尝试进行任务,因此除了增加堆大小之外你不能做任何事情 - > -Xmx2g(例如)

答案 1 :(得分:0)

如果您对填充堆的确切感到好奇,请尝试使用 -XX:+ HeapDumpOnOutOfMemoryError 参数启动jvm。发生内存不足错误时将创建堆转储,您可以使用jvisualvmEclipse Memory Analyzer

打开它