JAVA的二三事-JVM内存管理
1.JVM(java虚拟机)主要包括三块内存空间:栈内存,堆内存,方法区内存。
2.堆内存和方法区的内存各有一个,一个线程一个栈内存。
3.方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈(入栈),方法执行结束之后,该方法所需的内存空间被释放,成为弹栈(出栈)。
4.栈中主要存储的是方法体中的局部变量。
5.方法的代码片段及整个类的代码片段都被存储到方法区内存中,在类加载的时候这些代码片段会载入。
6.在程序执行过程中使用New运算符创建的java对象存储在堆内存中,对象内部有实例变量,所以实例变量存储在堆内存中。
7.变量分类:
-局部变量【在方法体中声明】
-成员变量【在方法体外声明】
*实例变量
*静态变量【static】
8.三块内存中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收主要针对堆内存。
9.垃圾回收【GC机制】
*当堆内存中的java对象存在:
(1)没有更多的引用指向它的时候
(2)这个对象无法被访问
俩种情况之一时,会被垃圾回收器回收。