对象有多大?为什么没有sizeof?

时间:2011-04-08 05:55:56

标签: java

  

可能重复:
  In Java, what is the best way to determine the size of an object?
  sizeof java object

C有一个sizeof运算符,它需要有一个,因为用户必须管理对malloc的调用,并且因为原始类型(如long)的大小不是标准化的。 但是在java中我们找不到对象的大小? 另外为什么java没有sizeof运算符或方法?

4 个答案:

答案 0 :(得分:12)

你已经回答了自己的问题,你可以用jvm来管理java中的内存。

在c中,你直接为你正在存储的数据结构(malloc)分配内存,所以你经常需要知道这些内容的大小。

在java中,内存系统很大程度上被抽象掉了,所以你不会(通常)关心你只是调用new而它会做它做的任何事情,如果不同的jvms以不同的方式处理你声明的类使用的内存可能会有所不同。

有时知道你的类占用了多少内存(比如你在一个受到严格约束的环境中试图减少你的内存占用量)是有用的,但是你很少需要在运行时获得那种信息。

答案 1 :(得分:1)

  

为什么java没有sizeof运算符或方法?

回答#1 - 因为Java不需要这个。在C中,需要sizeof运算符,以便您可以malloc正确大小的对象,进行某些类型的指针运算,等等。在Java中,您不需要(也不能)执行这些操作。

答案#2 - Java中对象的大小相当粗糙,实际上可以在对象的生命周期内更改(至少在某些JVM中)。 Ergo,sizeof运算符会有问题。

答案 2 :(得分:0)

在c中有很多关于指针的工作。程序员应该自己管理内存,所以他应该知道类型的大小。但是在Java中没有手动内存管理。 JVM完成所有工作,因此不需要sizeof。

答案 3 :(得分:0)

在C中你必须手动管理内存使用,你在问题中说了很多。由于您需要为对象分配空间并将其删除,因此sizeof运算符需要快速轻松地执行此操作。在Java中,内存管理由JVM负责。您不需要手动分配和取消分配内存,因此不需要sizeof运算符。