1、运行时数据区: 线程私有:(虚拟机栈,本地方法栈,程序计数器)
线程共有:方法区,堆
虚拟机栈:局部变量表(数据基本类型、对象引用类型reference(指向对象地址的指针))、操作数栈、动态链接、方法出口信息等。
本地方法栈:使用的native方法。
2、堆:对象实例,和数组都要在堆上分配内存,可以分为新生代和老年代,新生代又分为:Eden 、form survivor、to survivor
3、方法区:类信息、常量、静态变量、即使编译器 编译后的代码。
4、运行时常量池:是方法区的一部分,存放编译期生成的各种字面量和符号引用。
5、直接内存:NIO,直接使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。能够明显提升性能,因为 避免了Java堆和Native堆中来回复制数据。