首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MappedByteBuffer内存使用率

MappedByteBuffer内存使用率
EN

Stack Overflow用户
提问于 2012-09-25 06:36:57
回答 1查看 586关注 0票数 1

我有一个程序,它在重新启动之前会运行12+几个小时。该程序是一个“我的世界”的服务器,所以它不能真正重启那么频繁。

无论如何,大约每25-35分钟就会读取一个大小为42-67mb的文件。我使用RandomAccessFile和MappedByteBuffer将文件读入ObjectInputStream。

问题是,每次读取文件时,内存使用量都会增加100-300mb,这最终会导致OOM,因为它从未进行过垃圾回收。我目前正在使用VisualVM对其进行调试,只有在读取文件时,我才会看到ram使用率增加。

我已经添加了

代码语言:javascript
复制
((DirectBuffer) buffer).cleaner().clean();

但是它似乎不能让VM进行垃圾收集。

EN

回答 1

Stack Overflow用户

发布于 2012-09-25 06:46:25

当我在大约2003年进行测试时,映射缓冲区相对于随机访问文件的速度优势约为20%。如果它从那以后增加了,我会感到惊讶,如果它对于顺序访问也一样高,我也会感到惊讶。考虑到OOME的风险,这不值得。在BufferedInputStream和FileInputStream之间使用ObjectInputStream。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12573882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档