在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。
堆内存用于存放由new创建的对象和数组。JVM里的“堆”(heap)特指用于存放Java对象的内存区域。所以根据这个定义,Java对象全部都在堆上。JVM的堆被同一个JVM实例中的所有Java线程共享。它通常由某种自动内存管理机制所管理,这种机制通常叫做“垃圾回收”(garbage collection,GC)。
堆主要用来存放对象的,栈主要是用来执行程序的。
实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!