我正在使用Java,参数-Xms和运行时类。
我看到JVM分配了大约15%的可用内存,而不管它有多少。
Runtime rt Runtime.getRuntime ();
long total = rt.totalMemory ()
long free = rt.freeMemory ();
如果我使用参数启动程序,就是这种情况
-Xms4000m
以及
-Xms90m
我看到了TotalMemory结果中Xms的差异。
我了解从一开始就分配更多资源的策略,以避免昂贵的重新分配。
但是我不知道这里是否存在,以及如何计算程序的实际内存消耗。
答案 0 :(得分:1)
如果您使用的是Oracle JVM,则可以使用命令行工具 jmap 或GUI工具 jvisualvm 来测量Java程序的堆消耗。 / p>
答案 1 :(得分:1)
获取应用程序的PID,您可以通过以下方式使用top命令来打印统计信息。
top -b | grep PID
您可以了解一段时间后内存的使用情况。