JVM的理解

1、程序计数器

程序计数器占用的内存空间我们可以忽略不计,它是每个线程所执行的字节码的行号指示器。

2、虚拟机栈

java的虚拟机栈是线程私有的,生命周期和线程相同。它描述的是方法执行的内存模型。同时用于存储局部变量、操作数栈、动态链接、方法出口等。

3、本地方法栈

本地方法栈,类似虚拟机栈,它调用的是是native方法。

4、堆

堆是jvm中管理内存中最大一块。它是被共享,存放对象实例。也被称为“gc堆”。垃圾回收的主要管理区域

5、方法区

方法区也是共享的内存区域。它主要存储已被虚拟机加载的类信息、常量、静态变量、即时编译器(jit)编译后的代码数据。

JVM的理解

以上就是jvm在运行时期主要的内存组成,我们看到常见的内存使用不但存在于堆中,还会存在于其他区域,虽然堆的管理对程序的管理至关重要,但我们不能只局限于这一个区域,特别是当出现内存泄露的时候,我们除了要排查堆内存的情况,还得考虑虚拟机栈的以及方法区域的情况。

知道了要对谁以及那些区域进行内存管理,我还需要知道什么时候对这些区域进行垃圾回收。

转载于:https://my.oschina.net/sofly/blog/1612152