gpt4 book ai didi

java - MappedByteBuffer 内存使用

转载 作者:行者123 更新时间:2023-11-29 05:54:54 26 4
gpt4 key购买 nike

我有一个程序在重新启动之前运行了 12 个多小时。该程序是一个 minecraft 服务器,因此它不能经常重新启动。

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

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

我已经添加了

((DirectBuffer) buffer).cleaner().clean();

但它似乎没有让 VM 进行垃圾收集。

最佳答案

当我在 2003 年左右进行测量时,映射缓冲区相对于随机访问文件的速度优势大约为 20%。如果此后有所增加,我会感到惊讶,如果连续访问文件的速度如此之高,我也会感到惊讶使用权。考虑到 OOME 的风险,这是不值得的。在 FileInputStream 周围的 BufferedInputStream 周围使用 ObjectInputStream。

关于java - MappedByteBuffer 内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573882/

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