我们有一个Java应用程序,我们写了这些代码的最后部分
Runtime runtime = Runtime.getRuntime(); long memory = runtime.totalMemory() - runtime.freeMemory(); System.out.println("\n\nUsed memory is bytes: " + memory);
我们注意到,随着时间的推移,顶部显示应用程序的内存(%)列增加,但Java内存(从运行时variables)值显示上下波动? 那么,我们应该遵循哪一个来确定确切的内存使用? 我的意图是确定我的应用程序中是否有任何内存泄漏?
当JVM启动时,它会从操作系统中获取一些内存。 这是您在ps和top等工具中看到的内存量。
然后你的应用程序开始使用这个内存:这是你的代码和工具,如jstat看到的内存。
所以,如果你想debugging应用程序内的内存泄漏,你不想使用顶部或PS。