Java虚拟机所管理的内存包括以下几个运行时的数据区域:方法区,堆,虚拟机栈,本地方法栈,程序计数器。下面对其进行介绍:

  • 程序计数器

    • 它是一块较小的内存空间,可以看做当前线程做执行的字节码的信号指示器,在虚拟机概念模型,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。
    • 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,这种内存区域称为线程私有的内存。
  • Java虚拟机栈
    • 虚拟机栈就是常说的“”,具体的就是指虚拟机栈中局部变量表部分。局部变量表存放了编译期可知的各种数据类型,(boolean、byte、char、short、int、float、long、double)、对象引用和returnAddress类型(返回地址类型)。
    • Java虚拟机栈也是线程私有的,它的生命周期与线程相同。
    • 局部变量表所需的空间在编译期间完成分配,当进入一个方法时,这个方法需要在帧中分配多大的局部变量空间是完全确定的,在方法运行期间不会改变局部变量表的大小。、
  • 本地方法栈
    • 本地方法栈(native method stack)与虚拟机栈所发挥的作用是非常相似的,他们的区别不过是虚拟机栈为虚拟机执行Java方法(字节码)服务,而本地方法栈则为虚拟机使用到的native方法服务。
    • native方法指不是用Java代码实现的,它们来源于本地库的实现

转载于:https://www.cnblogs.com/bjm1/p/10501851.html

java虚拟机学习笔记(五)---运行时的数据区域相关推荐

  1. Java虚拟机学习笔记(一)--运行时数据区域

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 前言 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分成若干个不同的数据区域. 程 ...

  2. 《深入理解Java虚拟机》笔记01 -- 运行时数据区

    运行时数据区示意图 1. 程序计数器 占用一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器.主要用来记录线程执行到哪条语句了,分支.循环.跳转.异常处理.线程恢复等功能都需要依赖这个 ...

  3. Java 虚拟机学习笔记 | 类加载过程和对象的创建流程

    前言 创建对象是 Java 语言绕不开的话题,那么对象是如何创建出来的呢?我们今天就来聊一聊.对象创建第一步就是检查类是否加载,而类的加载又牵扯到类的加载过程.如果单说对象的创建而绕开类的加载过程,感 ...

  4. 运行时错误7内存溢出_JVM运行时内存数据区域

    阅读本文大概需要5分钟 作者:AI乔治出处:https://my.oschina.net/u/3611782/blog/4530512 1 讨论背景 周志明老师写的<深入理解Java虚拟机> ...

  5. Java 虚拟机学习笔记 | 运行时数据区总结

    前言 要想学习好 Java,Java虚拟(JVM)的学习是绕不开的.学习 Java虚拟(JVM)首先就要先了解的就是Java虚拟(JVM)运行时数据区. 在Java语言和虚拟机规范中对运行时数据区进行 ...

  6. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...

    前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机, ...

  7. java虚拟机学习笔记之垃圾收集(上)

    java程序是运行在java虚拟机当中的,在java虚拟机的堆中运行着程序所创建的对象.可以使用new,newarray,anewarray,multianewarray指令来创建对象,但是没有明确的 ...

  8. Java运行时的数据区域

    1.程序计数器 1.什么是程序计数器 当前线程所执行的字节码的行号指示器 2.特点 线程私有:每个线程都有一个独立的程序计数器,互不影响,独立存储,便于线程的切换 3.工作机制 所属的线程执行Java ...

  9. JVM学习笔记之-运行时数据区概述及线程概述,程序计数器(PC寄存器),虚拟机栈(栈,局部变量表,操作数栈,动态连接,方法调用,方法返回地址等),本地方法接口,本地方法栈

    运行时数据区概述及线程概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了Java在运行过程中内存申请.分配.管理的策略,保证了JV ...

  10. 深入理解JAVA虚拟机学习笔记(一)JVM内存模型

    摘要:   上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状 ...

最新文章

  1. Solr 4.x定时、实时增量索引 - 修改、删除和新增索引
  2. Html2excel 1.4.1 发布,Html 转 Excel 工具包
  3. 如何安装OpenCV?如何安装cv2?如何更新numpy?
  4. C# Task的用法
  5. python入门作业编程题-Python编程:从入门到实践——【作业】——第三章(列表)...
  6. 13.配置 influxDB 鉴权及 HTTP API 写数据的方法
  7. ajax返回类型探讨
  8. PYTHON——多线程:Thread类与线程函数
  9. html表单基础知识,【学习笔记】html基础知识第四更/与用户交互!(表单标签)...
  10. Centos上禁用 rpcbind 111端口
  11. R语言实现K最近邻算法(KNN)
  12. protel 99se 简单的手动画pcb
  13. 电脑电池怎么测试软件,笔记本电池检测软件,小编教你笔记本电池怎么检测
  14. 用酷狗播放音乐时,会显示在msn的头像旁边
  15. Autumn中文文档0:为什么使用Autumn
  16. #二维差分# [ssloj 1467] U
  17. 基于php的校园电影网站系统
  18. 数据科学必备用Python进行描述性统计数据分析详解
  19. PCB设计时应该考虑的几个问题
  20. 华为云mysql qb文件恢复到本地-参考华为云官方文档

热门文章

  1. Python基础(7) - 函数
  2. valgrind检测内存泄露
  3. 自食其力!ASP.NET 4打造HTML5视频控件
  4. 让Fckeditor支持中文——解决“Error loading /fckeditor/fckstyles.xml ”
  5. Linux下Oracle进程CPU使用率过高处理方式
  6. MySQL 浅谈NOT NULL和DEFAULT的关系
  7. dts directshow filter_DTS是什么?详解来了
  8. http请求转为https请求 java_如何将Javaweb工程的访问协议由http改为https及通过域名访问?...
  9. mysql碎片处理_mysql优化数据库和mysql数据库碎片处理
  10. php 实战技巧,PHP实战技巧(15)通过phpinfo()了解你的PHP配置状况(二)