gpt4 book ai didi

Java:关于调用 Runtime.freeMemory()、Runtime.totalMemory() 和 Runtime.maxMemory() 的成本

转载 作者:IT王子 更新时间:2023-10-28 23:34:17 28 4
gpt4 key购买 nike

我在内存中有一个 Map 来存储我的对象。我想在内存不足时刷新内存。我现在正在这样做:

void add(K key, V value) {
if (underPressure()) {
flush(innerMap);
}
innerMap.add(k, v);
}

boolean underPressure() {
Runtime rt = Runtime.getRuntime();
long maxMemory = rt.maxMemory();
long freeMemory = rt.freeMemory();

return (double) freeMemory / maxMemory < threshold;
}

由于每次插入时都会调用 underPressure(),它的成本是多少?据我了解,由于它是一个近似值,它应该由 jvm 以某种方式缓存,但有人真正了解这一点吗?

最佳答案

从 Java 7 开始,不再需要轮询空闲内存。可以注册垃圾收集事件。看到这个帖子:http://www.fasterj.com/articles/gcnotifs.shtml

所以我能想到的最好方法是在垃圾回收后检查可用内存,然后在需要时释放额外空间。

关于Java:关于调用 Runtime.freeMemory()、Runtime.totalMemory() 和 Runtime.maxMemory() 的成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8523517/

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