美文网首页
java虚拟机的理解(一)

java虚拟机的理解(一)

作者: 小豆_1122 | 来源:发表于2020-03-08 19:52 被阅读0次

    1. java 虚拟机概述和基本概念

    所谓虚拟机,就是一台虚拟的机器,

    Visual Box 和VMare 为系统虚拟机,

    java虚拟机属于程序虚拟机.

    java虚拟机有多种

    此款虚拟机:   Sun Classic Vm  已经淘汰了(第一款商用虚拟机)

                          纯解释器的方式来执行java代码,

                          如果想要编译的化 必须使用外挂的形式

                          就得使用jit编译.

    Exact VM : 准确是内存管理

                     编译器和解释器混合工作 以及两级即时编译器

                     只在Solaris平台发布

    常见的: Sun Hotspot (内置了jit编译器)

    历史:


    优势:

    2006年开源...

    常见的:Bea JRockit

    世界上最快的java虚拟机

    专注服务端应用

    优势

       1.垃圾收集器

       2. MissionControl 服务套件


     常见的: IBM J9

         IBM  Technology for Java virtual Machine

            IT4j


    Dalvik 虚拟机  安卓的应用平台

    dex dalvik Executalbe

    Microsoft JVM 微软虚拟机

     Azul VM  高性能虚拟机 完全碾压 hotspot

    Liquid VM 高性能虚拟机


    Taobao VM 虚拟机




    KVM虚拟机: 简单.轻量 高度可移植

                         在手机平台运行


    原理:

    1. java虚拟机的运行时区域

    线程独占区: 栈,程序计数器,本地方法栈

    线程共享区: 方法区,堆

    对象的创建和回收

    对象的创建 就是内存分配

    对象首先在Eden分配

    大对象直接进入老年代

    长期存活的对象进入到老年代

    空间分配担保

    逃逸分析以及栈上分配

     如何判断对象为垃圾对象

    我的理解是 失去引用的对象为垃圾对象

    这里就涉及到了 判断垃圾对象的算法

    1.引用计数法

    自动把 失去引用的对象 减1,为0 就为垃圾对象

    有引用就加1,

    这样的话 带来一个问题

     就是 堆中对象 互相引用的 始终不能回收

    所以 效率和性能不高

    所以引出了 第2中算法

    为可达性分析法

    2.可达性分析法

    可达性分析法弥补了 引用计算法的不足

    因为 会把失去引用的对象中引用的对象一并找出来 

    如何回收呢?

    垃圾收集算法

    1. 标记-清除算法 效率不高

    2.复制算法 适用于新生代

    3. 标记整理清除算法 适用于老年代

    4.分代收集算法 结合上面2和3 的算法

    回收首先需要 垃圾收集器

    垃圾收集器有

    serial,parnew, parallel, cms, g1

    推荐 查看

    1.serial :

    单线程的,
    Serial(串行)垃圾收集器是最基本、发展历史最悠久的收集器

    应用场景 :桌面应用 分配内存较小的

    2.parnew :

      

    除了多线程外,其余的行为、特点和Serial收集器一样;

    应用场景

          在Server模式下,ParNew收集器是一个非常重要的收集器,因为除Serial外,目前只有它能与CMS收集器配合工作;

          但在单个CPU环境中,不会比Serail收集器有更好的效果,因为存在线程交互开销。

    3.parallel 

    用在服务端默认的垃圾收集器

    针对吞吐量的

    Parallel Scavenge收集器

    4. cms 是一个并行的垃圾收集器

    边垃圾 边 垃圾

    5. g1 目前最高端的垃圾收集器

    工具:

    命令行工具:

    jps

    jstat

    jinfo

    jmap

    jhat

    jstart

    图形化工具

    jConsole

    VisualVM

    案例:

    就是经验


    java虚拟机的基本机构:

    a.类加载子系统

    b.方法区

    c.java堆

    d.直接内存

    e.java栈

    f.本地方法栈

    g.PC寄存器

    h.垃圾回收系统

    i.执行引擎

    2.堆,栈,方法区

    3.了解虚拟机参数

    4.垃圾回收概念和算法,及对象的分代转换

    5.垃圾收集器

    6.Tomcat性能影响实验

    7.性能监控工具

    对象的创建:

    如果同时创建对象会发生线程安全问题

    默认是parallel   因为新生代是 PSYongGen

    最小堆内存  -xms20M 

    最大堆内存 -xmx20M

    新生代 -xmn10M

    -XX:SurvivorRatio=8 这是配置新生代eden大小

    大对象大小配置:

    -XX:PretenureSizeThreshold=6M

    长期存活的对象配置:

    -XX:MaxTenuringThreshold 默认值是15次

    模拟应该是 for循环几次

    空间分配担保

    --XX:+HandlePromotionFailure 

    --XX:-HandlePromotionFailure  减号是禁用

    默认式开启状态  我们可以禁用

    这些都是参数配置

    相关文章

      网友评论

          本文标题:java虚拟机的理解(一)

          本文链接:https://www.haomeiwen.com/subject/ihzwrhtx.html