当前位置:首页 > 内存 > 正文

jvm虚拟机内存结构(vm虚拟机内存怎么设置)

  • 内存
  • 2024-05-15 05:09:55
  • 2344

一、详解JVM内存结构组成

你了解JVM内存结构吗?下面我给大家介绍一下JVM的内存结构。它主要包括两个子系统和两个组件。这两个组件是Runtimedataarea组件和Nativeinterface组件。)组件

JVM内存结构

我最近研究了一些Java内存泄漏问题,并与我原来的几个朋友进行了讨论。经过深入研究,我发现它们的存在。JVM中还有很多以前不知道的细节。要分析的话,首先看一下JVM的内部结构——

 

怎么样。如,JVM内存结构主要包括两个子系统和两个组件。这两个子系统是类加载器子系统,而Executionengine子系统的两个组件是Runtimedataarea和Nativeinterface()组件。本地接口组件

Classloader子系统的作用

根据Runtime数据区将类文件的内容加载到方法区(methodarea)中在指定的完全限定类名(例如javalangObject)上。Java程序员可以扩展javalangClassLoader类来编写自己的类加载器。

执行引擎。

执行类中指令的核心。JVM规范(JDK)的任何实现都是运行时引擎。各种JDK,比如Sun的JDK、IBM的JDK,一般好坏取决于它们实现的执行引擎。

原生接口组件

与本机库的互操作是与其他编程语言交互的接口。当你调用自己的方法时,你就进入了一个不再局限于虚拟机的新世界。所以也很容易出现自己的heapOutOfMemory。无法被JVM控制

RuntimeDataArea组件

这就是我们常说的JVM内存,它基本上分为五个部分——

堆(heap))Java虚拟实例中只有一个堆空间

MethodArea内存中Methodarea中保存着加载的类的信息。当虚拟机加载某种类型时,它就会使用它。班级。加载器找到对应的类文件,然后读取类文件的内容并传递给虚拟机。

JavaStack虚拟机(Java栈)在Loading时会直接对Javastack只执行两个操作或弹出堆栈

ProgramCounter每个线程都有自己的PC寄存器。PC寄存器的内容在线程启动时创建,始终指向一条指令的地址。这里的地址可以是本地指针,也可以是方法区中初始方法指令对应的偏移量。

Nativemethodstack(本地方法栈)存储的是该区包含的native方法的地址

lixixinzhi/文章/program/Java/hx/201311/26038


二、Java内存区域划分、内存分配原理是什么?

运行Java程序时,Java虚拟机(JVM)将其管理的内存划分为几个不同的数据区域。这些区域具有不同的用途及其创建和销毁点,其中一些区域随着虚拟机进程启动而存在,一些区域根据用户线程销毁的开始和结束而创建和销毁。根据《Java虚拟机规范(第2版)》,Java虚拟机管理的内存包括以下运行时数据区域,如下:

p>