JAVA的二三事-JVM内存管理

 

1.JVM(java虚拟机)主要包括三块内存空间:栈内存,堆内存,方法区内存。

JAVA的二三事-JVM内存管理

2.堆内存和方法区的内存各有一个,一个线程一个栈内存。

3.方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈(入栈),方法执行结束之后,该方法所需的内存空间被释放,成为弹栈(出栈)。

4.栈中主要存储的是方法体中的局部变量。

5.方法的代码片段及整个类的代码片段都被存储到方法区内存中,在类加载的时候这些代码片段会载入。

6.在程序执行过程中使用New运算符创建的java对象存储在堆内存中,对象内部有实例变量,所以实例变量存储在堆内存中。

7.变量分类:

                  -局部变量【在方法体中声明】

                  -成员变量【在方法体外声明】

                                    *实例变量

                                    *静态变量【static】

8.三块内存中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收主要针对堆内存。

9.垃圾回收【GC机制】

                  *当堆内存中的java对象存在:

                                    (1)没有更多的引用指向它的时候

                                    (2)这个对象无法被访问 

                  俩种情况之一时,会被垃圾回收器回收。