1、堆空间 就是用来存储对象的 栈空间是用来存储一些变量的 用完后会通过垃圾收集器自动清楚 引用对象通过类似指针的方法来指 2、程序从硬盘载入的内存-有四个内存区供程序使用 heap(堆 ),stack(栈),data segment,code segment heap堆:用来存放new出来的东西 stack栈:局部变量。 data segment:静态变量,字符串常量。 code segment:存放代码 3、首先解释一下虚拟机内存: java虚拟机存在方法区,堆空间与栈空间,定义是这样的,虚拟机具体实现完全可以把它们分开在不同内存中,也可以把它们放在同一段内存中。 方法区存放类与方法。 堆空间存放实例化的对象。 栈空间有两种,一种是方法栈,虚拟机会为每个线程所调用的方法申请空间,而这个栈就是这些空间,另外一个是操作数栈,两个局部变量或者成员变量需要进行处理的时候,执行语句会吧这两个变量的值放入操作数栈中进行处理,处理完成以后会将处理结果弹出栈。 了解了这些后其实那些问题都不难: 第一个问题上面说得很清楚了。