繁体   English   中英

查找内存使用量峰值

[英]Find Memory Usage Peaks

我的Java游戏出现问题,它使用的内存跳了很多。 我创建了此方法来查找正在使用的内存量:

public String readable(long bytes, boolean si) {
    int unit = si ? 1000 : 1024;
    if (bytes < unit) {
        return bytes + " B";
    }
    int exp = (int) (Math.log(bytes) / Math.log(unit));
    String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i");
    return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
}

readable(Runtime.getRuntime().totalMemory(), true)

它最初从200mb开始,然后跳到600m,然后逐渐增加。 我将如何监视这种情况的发生原因并寻找导致这种情况的内存泄漏? 我可以在eclipse上安装一个插件来查看内存使用情况和资源吗?

理想情况下,您不应对此进行检查。 更好的方法是查看堆转储。 如果您使用的是eclipse,则可以下载MAT 链接

totalMemory计算可访问对象和不可访问对象。 解释此数量的行为需要对垃圾收集有很多了解。

我建议您改用VisualVM。 安装VisualGC插件,并观察应用程序的内存(分为GC代),动态收缩和增长。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM