Linux云计算技术学习:虚拟机基本结构讲解

  

  我们要对JVM虚拟机的结构有一个感性的认知。毕竟我们不是编程人员,认知程度达不到那么深入。一个运行时的Java虚拟机实例的天职是:负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。   

  

   Linux云计算技术学习:虚拟机基本结构讲解”>
  </p>
  <p>
  1、类加载子系统
  </p>
  <p>
  负责从文件系统或者网络中加载类信息,加载的类信息存放于一块称为方法区的内存空间。除了类信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字量。
  </p>
  <p>
  2、Java堆
  </p>
  <p>
  在虚拟机启动的时候建立,它是Java程序最主要的内存工作区域。几乎所有的Java对象实例都放Java堆中。堆空间是所有线程共享的,这是一块与Java应用密切相关的内存区间。
  </p>
  <p>
  3、Java的NIO库(直接内存)
  </p>
  <p>
  允许Java程序使用直接内存。直接内存是在Java堆外的,直接向系统申请的内存区间。通常访问直接内存的速度会优于Java堆。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。由于直接内存在Java堆外,因此它的大小不会受限于Xmx指定的最大堆大小。但是系统内存是有限的,Java堆和直接内存的总和依然受限于操作系统能给出的最大内存。
  </p>
  <p>
  <img src=Linux云计算技术学习:虚拟机基本结构讲解