1.用new创建的对象在堆区,函数中的临时变量在栈区,Java中的字符串在字符串常量区。
2.栈:存放进本数据类型的数据和对象的引用,但对象本身不存在栈中,而是存放在堆中。
堆:存放new产生的数据。 静态域:存放在对象中用static定义的静态成员。
常量池:存放常量
非RAM存储:硬盘等永久存储空间。
3.Java堆区和栈区的区别
堆区(Heap):
堆区中存放的是对象以及每个对象对应的class的信息,其中存放class
的信息主要是获取类的操作指令,jvm只有一个堆区,被所有线程共享,堆中不存放基本
类型和对象引用,只存放对象本身。
栈区(Stack):
每个线程包含一个栈区,占中只保存基础数据类型的对象和自定义对象引用(不
是对象),对象都存放在堆区中;每个栈区中的数据(原始类型和对象引用)都是私有的,
其他栈不能访问;栈分为三个部分:基本类型变量区、执行环境上下文、操作指令区(存放
操作指令)。栈区由编译器自动分配释放,存放函数的参数值,局部变量的值等