java中有没有办法确定一个对象有多大?

发布于 2024-11-02 17:59:38 字数 366 浏览 5 评论 0原文

可能的重复:
java 对象的大小
在 Java 中,什么确定物体大小的最佳方法是什么?

嗨,

为什么java中没有sizeof?如何知道一个物体有多大?

谢谢

Possible Duplicates:
sizeof java object
In Java, what is the best way to determine the size of an object?

Hi,

Why is there no sizeof in java? how can one know how big is an object?

thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

长梦不多时 2024-11-09 17:59:38

是的,有。 这里 是如何完成此操作的示例。另一种方法是在对象实例化之前和之后声明对象并获取 Runtime.freeMemory(),然后查看差异。

Yes there is. Here is an example of how this can be done. Another way is to declare at object and take the Runtime.freeMemory() both before and after the object has been instantiated than look at the difference.

面犯桃花 2024-11-09 17:59:38

如果您想知道程序使用了多少内存,请使用探查器。

基本上,对象的大小是 Java 中不需要非常了解的事情之一。让你不明白为什么它在 C/C++ 中如此重要。 ;)

更长的答案是您可以使用 Instrumentation.getSizeOf(Object) 但它使用起来并不简单。

Use a profiler if you want to know your how much memory your program is using.

Basically, the size of an object is one of those things you don't need to be very aware of in Java. Makes you won't why it is so essential in C/C++. ;)

The longer answer is that you can use Instrumentation.getSizeOf(Object) but its not simple to use.

南风起 2024-11-09 17:59:38

这是一个复杂的讨论,因为“尺寸”是什么意思?你的意思是例如Java需要多少字节来表示一个int或一个char等?或者您的意思是它使用多少字节来存储对对象的引用?或者 JVM 使用多少字节的内部结构来创建和存储该对象中的所有数据?我大胆猜测最后两个问题的答案取决于操作系统,并且我认为您无法将其标准化。 (例如,在 64 位机器上,操作系统一次处理 64 位整数比处理 32 位整数更容易——所以在内部 Java int 很可能会用 8 个字节表示,尽管 java int 只存储32 位值。)

有多种方法可以找出其中的一些值——例如看看这个:http://devblog.streamy.com/2009/ 07/24/define-size-of-java-object-class/ - 但它们在不同操作系统之间不一致。

This is a complex discussion because what do you mean by "size"? Do you mean for instance how many bytes does Java take to represent an int, or a char etc? Or do you mean how many bytes does it use to store the reference to the object? Or how many bytes do the internal structures employed by the JVM use to create and store all the data in that object? I would venture to guess the answers to the last 2 questions is OS-dependent and I don't think you can standardize it. (For instance on 64-bit machines, it's easier for the OS to deal with a 64-bit integer at a time rather than 32 -- so quite likely internally a Java int will be represented on 8 bytes, even though java int's store only 32-bit values.)

There are ways to find out some of these -- for instance look at this: http://devblog.streamy.com/2009/07/24/determine-size-of-java-object-class/ -- but they won't be consistent across OS's.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文