虚拟机内存结构简述

这个虚拟机有好多个版本,其中最常用的是HotSpot,不晓得神情况下载就是这个版本。大致的内存模型入下图。
内存模型图
线程共享即为每个线程都用的同一个区域的内存,所有线程都可以自由访问。线程隔离即为线程独有的,线程之间不能共同访问。

  • 方法区
    这个区域的内存线程共享的,用于保存类的信息,常量,是堆的一个逻辑部分,所以垃圾回收也会回收到。静待变量等数据,1.7之前还存有字符串常量HotSpot1.7后转移到了堆,所以String.intern()查询虚拟机里是否有该字符串存在,方法不同的虚拟机可能表现不一样。在HotSpot中通常称为永久代,因为这部分内存也加入回收机制只是条件比较苛刻,


  • 第一次看到的时候还以为和数据结构和算法里面的堆有点联系的,然而堆内存管理方式不是堆数据结构,通常是链表的形式。这个堆就是表现为一堆内存这样子而已。跟数据结构里堆毛关系没有。这块内存存放对象实列的,线程共享。通常所说的对象引用就是指向这个区域的。

  • 本地方法栈和Java虚拟机栈
    这两个差不多一样,在有的虚拟机直接就是合二为一,这个区域线程私有的,每个方法在执行的同时都会创建一个栈帧(关于栈帧后面介绍),这个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息,每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。本地方法为Java方法服务,Java虚拟机方法为native方法服务(可能是其他语言的方法)

  • 程序计数器
    线程私有的,保存程序运行的位置(指令地址),指哪执行哪,先改变计数器的值再执行所指的代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值