基本不做回收的区域
Java运行时内存区域中,程序计数器
、虚拟机栈
、本地方法栈
这3个区域基本不会被GC。因为这3个区域随线程而生,随线程而亡,栈中栈帧分配对少内存在类结构确定下来的时候就已知了(大体编译期占用多少内存已知),因此这几个区域的内存分配和回收具备确定性。
回收区域
Java堆
和方法区
。
这部分区域对象在运行时才知道要分配什么对象,分配多少对象,分配多大对象,因此这部分的分配和回收是动态的。
Java运行时内存区域中,程序计数器
、虚拟机栈
、本地方法栈
这3个区域基本不会被GC。因为这3个区域随线程而生,随线程而亡,栈中栈帧分配对少内存在类结构确定下来的时候就已知了(大体编译期占用多少内存已知),因此这几个区域的内存分配和回收具备确定性。
Java堆
和方法区
。
这部分区域对象在运行时才知道要分配什么对象,分配多少对象,分配多大对象,因此这部分的分配和回收是动态的。