JVM

Java虚拟机,java程序的运行环境。

Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。

优点:
一次编译,到处运行
自动内存管理,垃圾回收功能
数组下标越界检查
多态(可扩展性)

程序计数器(寄存器)

  1. 作用:记住下一条jvm指令的执行地址

程序计数器(Program Counter Register):是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。

字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。程序的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

由于 Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的命令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各线程之间的计数器互不影响,独立存储,我们程这块内存区域为“线程私有”的内存。

此区域是唯一 一个虚拟机规范中没有规定任何OutOfMemoryError 情况的区域。
2. 特点:

  • 是线程私有的
  • 不会存在内存溢出

运行一个java程序:

先将一个.java程序编译成一个.class文件,也就是二进制字节码文件,该文件人类是没办法读懂的,可以经过反编译将二进制字节码文件转换成我们可以看懂的

javap命令(对字节码的一种解析或者是对class文件进行反汇编)

javap -v XXX.class

解析的结果是对这段代码详细的执行流程,记录了程序运行的指令以及下一条指令的地址。

JVM内存结构|程序计数器相关推荐

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

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

  2. Jvm 系列(二):Jvm 内存结构

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问 ...

  3. Java 内存模型和 JVM 内存结构真不是一回事

    这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为 JVM 内存结构,描述的是线程 ...

  4. 面试官问我JVM内存结构,我真的是

    面试官:今天来聊聊JVM的内存结构吧? 候选者:嗯,好的 候选者:前几次面试的时候也提到了:class文件会被类加载器装载至JVM中,并且JVM会负责程序「运行时」的「内存管理」 候选者:而JVM的内 ...

  5. 详解JVM内存结构(基于JDK8)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  6. jvm系列(二):JVM内存结构

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问 ...

  7. jvm内存结构_浅谈JVM内存结构

    JVM 可以分为 5 个部分,分别是: 类加载器(Class Loader):加载字节码文件到内存. 运行时数据区(Runtime Data Area):JVM 核心内存空间结构模型. 执行引擎(Ex ...

  8. 线程基础知识_线程生命周期_从JVM内存结构看多线程下的共享资源

    线程生命周期 线程状态 New: 线程创建(new Thread()) Runnable: 线程可运行(thread.start()), 注: 调用start并不一定是运行状态, 可能在等待CPU调度 ...

  9. 万万没想到,JVM内存结构的面试题可以问的这么难?

    在我的博客中,之前有很多文章介绍过JVM内存结构,相信很多看多我文章的朋友对这部分知识都有一定的了解了. 那么,请大家尝试着回答一下以下问题: 1.JVM管理的内存结构是怎样的?  2.不同的虚拟机在 ...

最新文章

  1. Android Activity的生命周期
  2. 1号店11.11:从应用架构落地点谈高可用高并发高性能--转载
  3. python是一种跨平台开源免费的高级动态编程语言吗_第1章 管中窥豹:Python概述免费阅读_Python程序设计开发宝典免费全文_百度阅读...
  4. flex 文字竖排_flex button字竖排展示
  5. 【cocos2d-x 手游研发----地图活起来了】
  6. 网页中的宽高度(网页视口宽高度,网页滚动宽高度,网页宽高度........)
  7. C语言,向函数传递一维数组,调用函数并计算平均成绩
  8. 【连载】Django入门到实战(一)
  9. 单片机第13课:串口通信---向计算机发送数据
  10. 通过RDC访问内网电脑时提示“出现身份验证错误。要求的函数不受支持 这可能是由于CredSSP加密”...
  11. word文档通配符换行_Word怎么批量删除分隔符
  12. 文氏图解析SQL语句中JOIN操作
  13. 6.26 mongoDB是无法find未初始的值的,mongoose的Schema需具象化及个人商品Schema设计,租赁网登录态初次尝试,vue对对象未赋初值的监听,forEach等api深拷贝问题
  14. 百度搜索引擎结果网址参数搜索历史记录(rsv_sug)
  15. 长波红外线灯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. Mac缓解或关闭鼠标加速
  17. Altium设置菜单之PCB编辑菜单
  18. 【JMX】-----JMX概述
  19. STC11/10xx系列单片机独立波特率发生器设置
  20. 最受欢迎的海外服务器,优缺点都给你整理好了

热门文章

  1. R语言与数据的图表展示(part1)--不知道起啥名,反正就是初步认识一下
  2. 电商云里 Product bundling 的一些概念
  3. SAP UI5 应用开发教程之四十七 - 如何自定义 SAP UI5 字符串类型输入字段的校验逻辑
  4. TypeScript Non-null Assertion Operator 非空断言操作符 - 感叹号
  5. SAP Spartacus User form属性的运行时字段明细
  6. Angular jasmine spied Method toHaveBeenCalled的执行原理
  7. SAP Spartacus UnitDetailsComponent对应的UI插入,是在路由框架里完成的
  8. 今日头条PC端的状态管理,使用的实现库是Redux
  9. Spartacus同SAP Commerce Cloud交互的示意图
  10. 在SAP Data Intelligence Modeler里创建新的pipeline