我们的Java程序具有树形结构大对象,ArrayList和MultiMaps。Java大型对象存储 - 协议缓冲区,MemoryMappedFiles
我遇到的问题是,我们已经分配了3GB的堆内存,但它仍然没有空间。
我想知道如果在这里任何人都可以提出一个方法来存储外堆这些对象和读取数据的块放回每个处理的呼叫需要的基础上java程序。我有兴趣将它们存储在文件中而不是其他原因的数据库中。
我碰到了“内存映射文件”,有些人建议“协议缓冲区”上一个相关的问题,这些都是目前外星人的概念给我,想知道如果有一个简单的方法。我也无法在这两个概念上找到好的例子。
真的很感谢你对此的帮助。
性能是非常重要的考虑因素,我知道JVM堆分配,但我不寻找增加的JVM堆大小。
听起来像一个* XY问题*。认为我错了?提供有关“大型对象”的详细信息以及如何使用它们。告诉我们为什么你想探索像mem映射文件这样的奇特解决方案。 – Andreas 2014-09-04 19:34:15
我已经把数据放在一个带有Java的内存映射文件中,但缺点是那里存储的数据不是Java对象 - 它看起来像一个大字节数组。 – antlersoft 2014-09-04 19:35:08
@Andreas,谢谢你的回应。我们将后端表数据读入Java,并基于某些逻辑将此数据转换为Java数据结构 - 树数据结构,对象ArrayList和MultiMaps。 我有Java逻辑从这些对象和数据结构读取并根据它们的输入处理用户请求。 如果仍然不清楚,我真的很抱歉。希望我能提供更多细节。 而我不得不寻求奇特的解决方案。我会采纳你的任何建议。 – 2014-09-04 19:45:00