一个栈的数据只占一个格子
比如 int i = 1,他的数据 1 可以直接存放在栈中
而比如 Object obj = new Object(); 他的数据 new Object() 占用不只一个格子,所以它只存放 new Object() 的地址,new Object()本身存放在堆中
一个堆数据占用一连串格子
比如 new Object() 这个实例,它要包括这个实例有几个变量几个方法,每个变量和方法有什么参数什么返回值等很多东西
堆和栈里的信息生命周期很短,是JVM垃圾处理的主要目标
比如 int i = 1,可能只有3行代码用了它,之后就彻底作废了
方法区里的信息生命周期很长,所以在JVM中单独放置在一个区域,垃圾处理极少扫描这一区域 |