Q:java中有和C中的sizeof()相似的操作符吗?
A:简单的说java没有提供任何和C中sizeof()类似的操作符。但是我们可以分析一下为什么java程序常常需要他.
一个C程序员需要自己定义数据结构、分配内存,而sizeof()是知道内存块大小从而分配内存所必需的。另外,C内存分配器比如malloc()基本上不做任何事情,直到对象初始化时: programmer must set all
object fields that are pointers to further objects. But when all is said and coded, C/C++ memory
allocation is quite efficient.
相比之下,java对象分配和构造是连在一起的(使用Allocated但未初始化的对象是不可能的).If a Java class defines fields that are references to further objects, it is also common to set them at construction time. Allocating a Java object therefore frequently allocates numerous interconnected object instances: an object graph.和自动垃圾收集联系一起,this is all too convenient and can make you feel like you never have to worry about Java memory allocation details.
当然,这些事情都是对简单的java应用程序而言.和C/C++相比,同等的java数据结构需要占用更多的物理内存.在企业级的软件开发中, 现在的32位JVM(java虚拟机)的最大可用虚存通常仍scalability constraint.因此,java程序员仍应该得益于sizeof()或其他的相似的东东来注心是否他的数据结构 are getting too large or contain memory bottlenecks.幸运的是,Java reflection 可以让你方便的写出这些工具.
http://www.javaworld.com/javaworld/javaqa/2003-12/02-qa-1226-sizeof.html?