在Java中我们编写了一个代码:
A a1;
a1 = new A();
Run Code Online (Sandbox Code Playgroud)
编译器编译代码时保留了多少字节的内存:
A a1;
Run Code Online (Sandbox Code Playgroud)
red*_*una 11
堆栈上使用了一个指针的内存.这应该是32位(4字节),除非您的机器处于64位模式.
编辑:
我看到有些人感到困惑,并认为A对象本身是在堆栈上分配的.Java中并非如此:所有对象都在堆上分配(当然是模数JIT优化).该行A a1;只是分配指针a1,最初设置为NULL.指针本身位于堆栈中,当然它指向的堆将在堆栈中.后面的调用new A()将在堆上分配一个A对象,并且该分配的大小取决于A中的内容.