可能重复:
In Java, what is the best way to determine the size of an object?
sizeof java object
C有一个sizeof运算符,它需要有一个,因为用户必须管理对malloc的调用,并且因为原始类型(如long)的大小不是标准化的。 但是在java中我们找不到对象的大小? 另外为什么java没有sizeof运算符或方法?
答案 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运算符。