【721、JVM 内存模型和垃圾回收】

64 阅读1分钟

JVM 的内存模型非常重要,主要有以下几个部分:

•堆(Heap):用来存储对象实例。这是JVM运行时所使用的主要内存。

•方法区(Method Area):用来存储已loaded和被虚拟机加载的类的信息。包括类名称、方法签名、字段等。

•本地方法栈(Native Method Stack):每个线程具有一个 Native Method Stack。用来存储正在执行的方法的信息,如方法调用、参数、局部变量等。

•程序计数器(Program Counter Register):用来存储当前线程正在执行的字节码的地址。

•java堆栈(Java Stack):用来存储正在执行的方法的信息。

JVM垃圾回收主要为了回收堆上不再使用的对象,以释放内存。主要有以下两种策略:

• 标记-清除(Mark-Sweep):标记已知的活对象,然后清除未标记的对象。

• 复制(Copying):将内存划分为两个空间,每次只使用其中一个空间。当一个空间已满时,将其中还活着的对象复制到另一个空间,然后清空原先的空间。

JVM会在合适的时候进行垃圾回收,关闭并清理不再使用的对象,释放内存资源。这都在程序运行时自动进行,不需要开发者手动干预。