JVM讲解

JVM

  概述:JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

       引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码

                (字节码),就可以在多种平台上不加修改地运行。————摘自百度百科

  Java虚拟机将.java文件编译成.class文件,然后使用类加载器将类加载到内存当中。由于cpu不能够直接解释.class,因此虚拟机需要将class文件编译成本地代码,让cpu能够直接运行和处理的。

JVM结构图如下:

  

  类加载系统:classLoader 从文件系统加载class信息,加载的类信息保存在方法去的内存空间,方法去可能还会存放运行常量的信息,包括字符串常量和 数字常量
  方法区:存放变量,方法和静态变量
  java堆:在虚拟机启动时就启动了,java程序主要使用堆,存放对象信息
  直接内存:在java堆外,频繁
  垃圾回收机制:对以上三个可进行回收。隐式的释放内存
  java栈:每一个java虚拟机线程都有一个私有的java栈,一个线程的java栈在下称创建时被创建,java栈中保存着帧信息,保存局部变量,方法参数,同时和java方法的调用和返回值相关
  本地方法栈:本地方法的调用
  PC寄存器:每一个线程私有的空间

  JVM堆结构:
  分代策略:新生代(回收效率高)、老年代(低)和永久代(更低) 区域划分
  为了提高对象内存分配和垃圾回收的效率 碎片
  hosspot的概念

       新生代:eden(70%-95%被回收) survior survior 超过十五次没被回收会进入from survior区

拓展:并不是太详细,以后会慢慢补全的

  JVM垃圾回收算法及收集器
    引用计数法: +1 -1问题 对象引用计数器
    复制算法:
    标记清除法:碎片
    标记整理算法:解决碎片问题,有序排序

      次收集器
      全收集器

      很多公司都有自己的虚拟机

猜你喜欢

转载自www.cnblogs.com/l-x-x-y-d-j/p/11333411.html