1、方法区
一类特定对象能够执行的方法的集合,对同一个类的对象来说方法区是共享的。
2、堆内存(new关键字和构造器创建的对象)
共享的内存区,空间最大,存放对象,jvm启动的时候启动,几乎所有的对象都在堆里面,内存的清理(自动内存回收)由GC(垃圾回收器)来完成,不清理的话会造成内存溢出,造成程序崩溃。垃圾回收器是基于算法的。
3、栈内存
基本数据类型的变量、对象的引用、函数调用的现场保存都使用内存中的栈空间
4、静态存储区
程序中的字面量(literal)如直接书写的100、“hello”和常量都是放在静态存储区中。
String str = new String(“hello”);
str放在栈中,用new创建出来的字符串对象放在堆上,而“hello”这个字面量放在静态存储区。