Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jconsole显示的堆使用率和应用程序计算的使用率百分比不匹配_Java_Memory_Garbage Collection_Jvm_Jconsole - Fatal编程技术网

Java jconsole显示的堆使用率和应用程序计算的使用率百分比不匹配

Java jconsole显示的堆使用率和应用程序计算的使用率百分比不匹配,java,memory,garbage-collection,jvm,jconsole,Java,Memory,Garbage Collection,Jvm,Jconsole,我们运行一个JVM应用程序,它有46 GB的堆内存(44GB旧内存+2GB年轻内存) 我们使用jconsole连接到jvm进程 在应用程序中,我们根据以下代码计算已使用内存的百分比 Runtime runtime = Runtime.getRuntime(); return Math.round( 100 * ( runtime.totalMemory() - runtime.freeMemory() ) / runtime.getMaxMemory() ); 当jconsole显示内存使用量

我们运行一个JVM应用程序,它有46 GB的堆内存(44GB旧内存+2GB年轻内存)

我们使用jconsole连接到jvm进程

在应用程序中,我们根据以下代码计算已使用内存的百分比

Runtime runtime = Runtime.getRuntime();
return Math.round( 100 * ( runtime.totalMemory() - runtime.freeMemory() ) / runtime.getMaxMemory() );
当jconsole显示内存使用量为39 GB时,上述代码段给出的值仅为77%,即(0.77*46)35.5 GB

为什么存在不匹配,我如何关联它们?我错过什么了吗?
我需要找到使用率%,以便在我们的应用程序中触发一些操作。

一些查询:(a)哪个Java版本?(b) 您如何确保应用程序可用内存计算和jconsole内存报告都在同一时间完成?很抱歉回复太晚,但我还是很清楚。下面是给你的答案a)Java 7 b)我可以通过jconsole实时监控,从我们打印统计数据的应用程序中——我已经观察到了这一点,其中包含大量的静态数据。