gpt4 book ai didi

java - JVM内存错误统计

转载 作者:行者123 更新时间:2023-11-30 07:29:48 25 4
gpt4 key购买 nike

我一直在谷歌中寻找解决我问题的方法,但没有成功。我有一个“近实时”的应用程序,它会不时检查可用内存,并在系统中有不少于 10% 的可用内存时通知用户。我正在使用以下代码来执行此操作:

double free = Runtime.getRuntime().freeMemory();
double total = Runtime.getRuntime().maxMemory();
double freeMemoryProc = (free / total) * 100;
if (freeMemoryProc <= 10) {
// Warn user...
}

这段代码大部分时间都运行良好,但是当 GC 没有及时启动以收集所有未使用的内存时,它会给我错误的消息。

问题:

  • 我说 freeMemoryProc 不是真正的测量,因为它取决于 GC 何时启动,我说得对吗?

  • 是否有更好的方法(最好独立于 GC)来计算我的应用程序的可用内存量?


相关问题(没有帮助)

Obtaining memory available to JVM at runtime

提前致谢,问候。

最佳答案

Am I right when saying that freeMemoryProc is not a true measurement as it depends on when the GC kicks in?

是的......有点。它衡量的是当前未分配的内存量,而不是必要时可以分配的内存量。

Is there a better way (preferably independent from GC) to calculate the amount of available memory for a my application?

没有独立于垃圾收集器的方法来做到这一点。一般来说,判断当前分配给对象的内存是否“正在使用”(即它不是未收集的垃圾)的唯一方法是……运行垃圾收集器。

你能做的最好是在垃圾收集器运行后立即捕获内存使用情况,并希望内存使用的模式相对平滑。

请注意,从性能的角度来看,运行 GC 只是为了找出剩余的内存量并不是一个好主意……尤其是在近乎实时的应用程序中。 (但我猜你已经知道了!)

关于java - JVM内存错误统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308493/

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