首页 > 系统相关 >JVM内存模型

JVM内存模型

时间:2023-11-08 17:56:21浏览次数:32  
标签:虚拟机 计数器 线程 内存 JVM 方法 模型

JVM内存模型

JVM-就是Java虚拟机
主要由ClassLoader(类加载器),Runtime Data Area(运行时数据区,内存分区),Execution Engine(执行引擎),Native Interface(本地库接口)组成

JVM屏蔽了平台,使Java只需要生成在JVM上运行的字节码文件,就可以实现多平台。

JVM的执行过程

Java文件通过javac编译为class文件,然后JVM通过ClassLoader加载到Runtime Data Area,由Execution engine翻译为操作系统指令集交给CPU执行,此时会调用到Native Interface。
img

在内存中,堆和方法区是所有线程共有的,而虚拟机栈、本地方法栈和程序计数器是线程私有的

虚拟机所管理的最大的一块内存,所有线程共享,在虚拟机启动时创建,唯一的目的就是存放对象实例

堆内存通常被划分为新生代和老年代,新生代中通常也会进行一定的划分,这主要关系到JVM的垃圾回收机制(分代收集理论)。我们通常认为大多数对象的存活时间都很短,而一个被经常使用的实例对象越不容易死去,因此垃圾收集器根据年龄(对象经过垃圾收集过程的次数)来将Java堆划出不同的区域存储。

方法区

与堆一样是所有线程共享的区域,存储已经被虚拟机加载的类型信息,常量、静态变量、代码缓存等。也可以叫metaSpace(元空间)

类名、父类名、修饰符、直接接口的有效列表
成员变量的相关信息
方法的相关信息

JVM 栈

线程私有的,生命周期与线程相同,描述方法运行时的线程内存模型,存储局部变量表、操作数栈、动态连接、方法出口等,方法的执行就对应栈帧的入栈和出栈。

本地方法栈

与JVM栈类似,只不过JVM栈为字节码服务,而本地方法栈为本地库的方法服务。

程序计数器

JVM的字节码解释器在工作时,就是要通过改变程序计数器的值来选取下一条要执行的命令,像分支、循环、跳转、异常处理、线程恢复都依赖计数器完成

程序计数器的作用就是存放指令地址, 确定了指令的执行顺序!


需要注意的是,除程序计数器外,其他区域都规定了在内存不足时会抛出OutOfMemoryError异常。

如有疏错,恳请指证。

标签:虚拟机,计数器,线程,内存,JVM,方法,模型
From: https://www.cnblogs.com/twfplayer/p/17817989.html

相关文章

  • PHP使用php_stl计算STL模型体积和表面积
    使用composer安装chubv/php-stl包<?phprequire_once'vendor/autoload.php';usePHPSTL\Handler\VolumeHandler;usePHPSTL\Handler\SurfaceHandler;usePHPSTL\Reader\STLReader;$reader=newSTLReader();$reader=$reader->forFile('./......
  • VMIC-5565反射内存天津地区出售
    PMC-5565是一款标准PMC总线反射内存实时接口板,适用于3U/6UCPCI/PXI总线。用于需要大带宽海量数据高速率传输,并同时实现低时延快速外部事件响应以及分布多结点的准确同步。应用成功的环境中,以确定性的高速率传输和共享数据。【特性】PMC总线接口,32位/33MHz支持DMA读写板载内存数据,......
  • GEPCI-5565PIORC-210000反射内存卡
    反射内存实时网的特点VMIC反射内存是一种通过局域网在互连的计算机间提供的数据传输的技术,强实时网络设计人员已经越来越多地采用这种技术。VMIC反射内存实时局域网的概念十分简单,就是设计一种网络内存板,在分布系统中实现内存至内存的通信,并且没有软件开销。每台结点机上插一块反射......
  • TH系列新品16口ACC-5595反射内存交换机
    一、光纤网简介 在半实物仿真系统等实时系统中,要求系统各部分之间的数据传输具有很高的实时性,而传统的网络技术,如以太网、FDDI等在实时应用中存在以下缺点:(1)数据传输速率不高;(2)数据传输实时性差,传输延迟较大且延迟具有不可预测性;(3)网络通信需要借助多种网络协议来完成,通讯效率较低。......
  • GEPCI-5565PIORC-110000反射内存卡
    反射内存实时网的特点VMIC反射内存是一种通过局域网在互连的计算机间提供的数据传输的技术,强实时网络设计人员已经越来越多地采用这种技术。VMIC反射内存实时局域网的概念十分简单,就是设计一种网络内存板,在分布系统中实现内存至内存的通信,并且没有软件开销。每台结点机上插一块反射......
  • python实现STL模型文件体积表面积计算
    没有什么特殊的算法,直接用包,开箱即用fromstlimportmeshimportnumpyasnp#读取stl文件filename='./text.stl'mesh_data=mesh.Mesh.from_file(filename)xyz=(mesh_data.max_-mesh_data.min_)sizel=round(xyz[0]/10,2)sizew=round(xyz[1]/10,2)s......
  • 浪潮信息彭震:加速智算系统创新,切实解决大模型算力“买不起、建不了、算不好”难题
    2023年,生成式人工智能的爆发带来了历史性产业机遇,正在逐步改造重塑社会、经济、文化等各个领域。GPT-4、Llama2、文心、源等大模型在写文章、对话、企划、绘画、写代码等很多领域已经表现出了让人惊艳的创作能力。未来,AIGC与数字经济、实体经济的深度融合,还将创造出更多颠覆性的社......
  • 大模型时代,程序员的工作还是“写程序”?
    过去,作为一名程序员的职责非常明确,具备对计算机和软件基本原理的掌握,至少掌握一门编程语言,了解若干流行的框架,编写和调试代码,确保应用程序正常运行,你就可以称为一名合格的程序员了。然而,真正专业的“程序员”并不仅仅局限于这一点。由于软件的长期维护特性和天生的复杂性,编写高效......
  • 大模型时代,程序员的工作还是“写程序”?
    过去,作为一名程序员的职责非常明确,具备对计算机和软件基本原理的掌握,至少掌握一门编程语言,了解若干流行的框架,编写和调试代码,确保应用程序正常运行,你就可以称为一名合格的程序员了。然而,真正专业的“程序员”并不仅仅局限于这一点。由于软件的长期维护特性和天生的复杂性,编写高......
  • MySQL学习(13)内存中的数据——Buffer Pool
    BufferPool是什么BufferPool就是MySQL服务器启动时向操作系统申请的一片连续的内存。默认情况下,BufferPool的容量为128MB。SHOWVARIABLESLIKE'innodb_buffer_pool_%'; 可以通过启动项innodb_buffer_pool_size设置(单位为字节),不能设置小于5MB。[server]innodb_buf......