1,程序计数器,较小的内存空间,存着当前线程执行的行号,每个线程都有一个自己独立的pc,不会抛outOfMemoryError
2,java 虚拟机栈,线程私有,方法执行的时候会创建一个栈帧,存着方法相关的信息,会抛 stackOverflowError,outOfMemoryError
3,本地方法栈,为JVM使用到的native方法服务stackOverflowError,outOfMemoryError
4,java堆,最大的一块内存区,被所有线程共用,只是为了存放对象实例,是GC管理的主要区域,也叫GC堆。这里可细分为 新生代,老年代,或者 Eden,from survivor,to survivor...
5,方法区,被线程共用
6,运行时常量池,是方法区的一部分
other: 有一个 直接内存,NIO,使用native函数,直接分配堆外内存,然后通过java堆中的directByteBuffer对象引用这块内存。
虽然名字各不相同,但都是一块内存区域,名字是为了方便记忆内存存放数据类型的。