gpt4 book ai didi

java - Runtime.freeMemory() 问题 - Java

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:40:20 24 4
gpt4 key购买 nike

嘿,我正在用这段代码测试 Runtime.freeMemory():

 Runtime runtime = Runtime.getRuntime();
long freeMemory = runtime.freeMemory();

// This is some arbitary factor that should work <= 1
double factor = 0.8;

int size = (int) (factor * freeMemory);
byte[] testArray = new byte[size];

我正在创建一个大小接近 freeMemory 值的字节数组。出于某种原因,尤其是当我将程序的内存限制在 8MB 左右时,代码会针对任何大于 0.55 的因素抛出 OutOfMemory 异常。这真的没有意义,肯定是 freeMemory 意味着 freeMemory,我希望它有点超出,但不会是实际免费的两倍。

有什么建议吗?谢谢

(请注意,在我的测试中,我使用 -Xmx8M 等将程序可用内存限制为 8MB 或 16MB)

最佳答案

实际上,您的空闲内存分为两代:http://java.sun.com/docs/hotspot/gc1.4.2/一个是“年轻”一代,一个是“老”一代。如果您使用 -verbose:gc -XX:+PrintGCDetails VM 设置运行,您可以看到每一代需要多少时间。我发现我可以完全填满我的 tenured generation,但仅此而已。

关于java - Runtime.freeMemory() 问题 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774597/

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