gpt4 book ai didi

java - 是否有可能控制反序列化文件时创建的对象数量

转载 作者:行者123 更新时间:2023-11-30 11:27:30 25 4
gpt4 key购买 nike

假设我有一个文件,其中包含很多(很可能超过 10 万个,可能有数百万个)同一类的序列化对象。我读取这些对象并用它们做一些事情:

//open stream
try{
while(true) {
Object o = ois.readObject();
foo(o);
}
}catch(EOFException){
}
//close stream...

完成此操作后,将创建大量令人不安的对象。我的问题是我无法控制这些对象,并且在 GC 决定释放它们之前它们不会被释放。

有没有办法对创建的新对象的数量设置上限?例如,如果我的文件有 100K 个序列化对象,是否有办法调整 readObject 机制以便使用固定大小的池?

更多详情

大约 100K 的目标文件是许多较小文件的合并结果。这个小过程所做的是创建一个排序的 CSV 文件。

最佳答案

到目前为止,所有建议的评论或答案都不起作用(其中大部分也是不必要的),因为 ObjectInputStream 本身持有对它曾经反序列化的每个对象的引用,用于保存对象图.

您需要限制写入 到文件的数据量,这样您就不必为每个文件处理 100,000 个对象,如果可能,您还应该使用 ObjectOutputStream。 reset()ObjectOutputStream.writeUnshared(),原因在它们各自的 Javadoc 注释中有所描述。

关于java - 是否有可能控制反序列化文件时创建的对象数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com