[英]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.