发布于 2011-04-21 16:35:38
是的有。这里就是如何做到这一点的一个例子。另一种方法是在实例化对象之前和之后声明at对象并接受Runtime.freeMemory(),而不是查看差异。
发布于 2011-04-21 16:34:04
如果您想知道您的程序正在使用多少内存,请使用分析器。
基本上,在Java中,对象的大小是不需要非常注意的事情之一。让你不会为什么它在C/C++中如此重要。;)
更长的答案是,您可以使用Instrumentation.getSizeOf(对象),但使用起来并不简单。
发布于 2011-04-21 16:35:54
这是一个复杂的讨论,因为你所说的“尺寸”是什么意思?例如,您的意思是Java需要多少字节来表示int或char等?或者您是指它用来存储对对象的引用的字节数吗?或者JVM使用多少字节来创建和存储该对象中的所有数据?我冒昧地猜测最后两个问题的答案是操作系统依赖的,我认为你不能标准化它。(例如,在64位机器上,操作系统一次处理64位整数比32更容易--因此Java int很可能在内部以8字节表示,尽管java int的存储只有32位值。)
有一些方法可以找出其中的一些--例如,看看这个:http://devblog.streamy.com/2009/07/24/determine-size-of-java-object-class/ --但它们在整个操作系统中并不一致。
https://stackoverflow.com/questions/5747026
复制相似问题