- JVM(java虚拟机)主要包括三块内存空间,分别是:栈内存、堆内存、方法区内存。
- 堆内存和方法区内存各一个,一个线程一个栈内存。
- 方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈(入栈)。方法执行结束之后,该方法所占的内存空间释放,称为弹栈(出栈)。
- 栈中主要存储的是方法体中的局部变量。
- 方法的代码片段以及整个类的代码片段都会存储到方法去内存中,在类加载的时候这些代码片段会被载入。
- 在程序执行过程中使用new运算符创建的java对象,存储在堆内存当中,对象内部有实例变量,所以实例变量存储在堆内存中。
- 变量分类:
- 局部变量【方法体中声明】
- 成员变量【方法体外声明】:
- 实例变量【前面修饰符没有static】
- 静态变量【前面修饰符没有static】
- 静态变量存储在方法区内存中。
- 三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
- 垃圾回收器(自动垃圾回收机制、Gc机制)什么时候会考虑将java对象的内存回收呢?
- 当堆内存的java对象变成垃圾数据的时候,会被垃圾回收器回收。
- 什么时候java对象会变成垃圾数据呢?
- 没有更多地引用指向它的时候(对象只能通过引用的方式访问,所以如果没有引用对象无法访问,变成垃圾数据)。
相关文章: