JVM的内存组成

21 篇文章 0 订阅

JVM的内存组成

首先JVM的组成是分为了共享区和私有区:

  • 共享区:包含了方法区和堆。
  • 私有区:包含了程序计数器PC、虚拟机栈和本地方法栈。

方法区(Method Area):方法区存放了静态变量、常量、虚拟机加载的类的信息。垃圾回收器是很少对方法区的内容进行垃圾回收的,垃圾回收器在方法区主要回收的内容是常量以及类型卸载的信息,对于静态变量是不进行回收的,但是如果我们定义的静态变量是一个引用类型的话,被引用的对象是有可能被回收的。

堆(Heap):存放的是程序运行时所创建的对象实例,堆是垃圾回收的主要区域。

程序计数器(Program Counter):程序计数器就是指当前线程所执行的字节码指令的行号指示器,比如分支、跳转、循环、异常处理、线程恢复都需要依赖程序计数器来实现。在Java多线程是通过线程轮流切换来分配时间片来执行的,为了线程切换后能恢复到正确的位置,所以每个线程都有单独的程序计数器。

虚拟机栈(VM Stack):线程私有,主要为Java的方法服务。当线程创建的时候,虚拟机栈会为线程分配一块内存的区域,在线程执行的过程中,调用的每个方法都会创建一个栈帧。在栈帧中用于存放局部变量,操作栈、动态链接、方法出口等,每个方法从被调用到执行完都对应着一个栈帧在虚拟机中从入栈到出栈的过程。

本地方法栈(Native Method Stack):与虚拟机栈很相似,区别在于虚拟机栈是为执行Java方法时所提供的的,而本地方法栈是为执行本地方法(操作系统级别的底层方法)时所服务的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackieLeeee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值