【发布时间】:2012-03-11 05:51:44
【问题描述】:
我想记录一个对象为一个项目占用了多少内存(希望以字节为单位)(我正在比较数据结构的大小),似乎在 Java 中没有方法可以做到这一点。据说,C/C++ 有 sizeOf() 方法,但这在 Java 中是不存在的。我尝试在创建对象之前和之后使用Runtime.getRuntime().freeMemory() 记录JVM 中的空闲内存,然后记录差异,但它只会给出0 或131304,而两者之间没有任何内容,无论结构中的元素数量如何。请帮忙!
【问题讨论】:
-
您可能想尝试 totalMemory() 然后 freeMemory() 并减去它们。
-
我建议您看看 Jbellis JAMM。 (github.com/jbellis/jamm) 它依赖于上面提到的检测代理,但封装了一些实用工具来深入测量整个对象图的足迹。对我来说看起来很简单而且很酷。
标签: java memory memory-management data-structures