gpt4 book ai didi

java - 当我接近 OutOfMemoryError 时,如何在 java 中确定?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:28 25 4
gpt4 key购买 nike

我需要找出真正接近 OutOfMemoryError 的时间,以便将结果刷新到文件并调用 runtime.gc();。我的代码是这样的:

Runtime runtime = Runtime.getRuntime();
...
if ((1.0 * runtime.totalMemory() / runtime.maxMemory()) > 0.9) {
... flush results to file ...
runtime.gc();
}

有更好的方法吗?有人可以帮我一下吗?

编辑

我知道我这样是在玩火,所以我想用一种更可靠、更简单的方法来确定我什么时候吃饱了。我目前正在使用 Jena 模型,所以我做了一个简单的检查:如果模型有超过 550k 的语句,那么我会刷新,这样我就不会冒任何风险。

最佳答案

首先:如果你想判断你是否接近OutOfMemoryError,那么你所要做的就是比较当前内存和最大使用内存通过 JVM,这就是您已经做过的事情。

第二:您想将结果刷新到文件中,我想知道为什么您要在接近 OutOfMemoryError 时这样做,您只需使用 之类的东西code>FileWriter 有一个缓冲区,所以如果缓冲区已满,它会自动刷新结果。

第三:永远不要显式调用GC,这是一种不好的做法,而是优化您的JVM 内存参数:

-Xmx -> this param to set the max memory that the JVM can allocate
-Xms -> the init memory that JVM will allocate on the start up
-XX:MaxPermSize= -> this for the max Permanent Generation memory

还有

-XX:MaxNewSize=  -> this need to be 40% from your Xmx value
-XX:NewSize= -> this need to be 40% from your Xmx value

这些将加速 GC。

-XX:+UseConcMarkSweepGC 为旧空间启用 CMS

关于java - 当我接近 OutOfMemoryError 时,如何在 java 中确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22170635/

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