|
|
1
0
您试图保存的“SiteGroup”对象是什么?我问,因为任何一个对象的大小都不太可能是130MB,除非它有一个巨大的列表/数组/映射/无论其中有什么——如果是这样的话,答案就是将数据保存在数据库中。 但是,如果对象中没有Monster集合,那么问题很可能是对象树包含对Bagillion对象的引用,而序列化当然会进行深度复制(这个事实已经被用作实现clone()的快捷方式很多次),因此所有内容都会以自上而下的方式一次编目。 如果这就是问题所在,那么解决方案就是实现您自己的序列化方案,其中每个对象以自下而上的方式进行序列化,可能是在多个文件中,并且只维护对其他对象的引用,而不是整个对象。这将允许您分别写出每个对象,这将产生您正在寻找的效果:由于以块形式写出数据,内存占用会变小。 然而,实现您自己的序列化(比如实现clone()方法)并不是那么容易。所以这是一个成本/收益的问题。 |
|
|
2
2
这在很多层面上都是错误的。这是对序列化的大量滥用。序列化主要用于临时存储对象。例如,
Java的序列化不需要处理对象的长期存储(没有版本控制支持),并且可能无法很好地处理大型对象。 对于这么大的事情,我建议首先进行一些调查:
如果一切都是正确的,那么您必须研究java.io.serialization的替代方案。通过java.io.externalization获得更多的控制可能会起作用。但我建议使用JSON或XML表示。 更新: 调查: |
|
|
3
0
听起来,无论您使用的是什么运行时,都有一个不太理想的对象序列化实现,您可能无法控制它。 这里也提到了类似的投诉,尽管它很古老。 http://objectmix.com/weblogic/523772-outofmemoryerror-adapter.html 你能使用WebLogic的新版本吗?你能在单元测试中复制这个吗?如果是这样,尝试在不同的JVM下运行它,看看会发生什么。 |
|
|
4
0
我不知道WebLogic(我想是-jrockit)序列化的具体情况:老实说,我看不出使用bytearrayOutputstreams的理由……
您可能希望实现
|
|
|
5
0
这不是默认序列化的工作方式。你必须有一些特殊的代码才能做到这一点。解决方案:不要。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |