博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java虚拟机的体系结构和内存模型
阅读量:4144 次
发布时间:2019-05-25

本文共 729 字,大约阅读时间需要 2 分钟。

jvm内存结构

方法区和堆是所有线程共享的内存区域;java栈、本地方法栈和程序计数器是运行是线程私有的内存区域。每个线程都有一个独立的栈和程序计数器

主要关注内存结构,以及各自存储什么内容。

  • Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。
  • 方法区(Method Area),方法区与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息常量静态变量方法字节码信息(包括静态方法和实例方法)即时编译器编译后的代码等数据。
  • 程序计数器(Program Counter Register),程序计数器是一块较小的内存空间,它是在线程启动时创建的,大小为一个字长。它的作用可以看做是当前线程所执行的下一条字节码指令的位置
  • Java栈(Java Stacks),与程序计数器一样,也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame),用于存储局部变量表方法参数中间运算结果等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
  • 本地方法栈(Native Method Stacks)。这是 Java 调用操作系统本地库的地方。
  • 执行引擎,Java虚拟机的核心,控制装入 Java 字节码并解析;对于运行中的Java程序而言,每一个线程都是一个独立的虚拟机执行引擎的实例,从线程生命周期的开始到结束,他要么在执行字节码,要么在执行本地方法。

你可能感兴趣的文章
码农吐糟同事:写代码低调点不行么?空格回车键与你有仇吗?
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>
你准备写代码到多少岁?程序员们是这么回答的!
查看>>
码农:和产品对一天需求,产品经理的需求是对完了,可我代码呢?
查看>>
程序员过年回家该怎么给亲戚朋友解释自己的职业?
查看>>
技术架构师的日常工作是什么?网友:搭框架,写公共方法?
查看>>
第四章 微信飞机大战
查看>>
九度:题目1008:最短路径问题
查看>>
九度Online Judge
查看>>
九度:题目1027:欧拉回路
查看>>
九度:题目1012:畅通工程
查看>>
九度:题目1017:还是畅通工程
查看>>
九度:题目1034:寻找大富翁
查看>>
第六章 背包问题——01背包
查看>>
51nod 分类
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>