zoukankan      html  css  js  c++  java
  • java jvm核心

    jvm

      内存管理

        方法区(线程共享) 

          存放常量、元数据信息、class文件信息

        堆(线程共享)

          java中内存最大的一块区域,

          存放对象实例,对象实例主要分对象头、实例数据,对象头包括自身运行时的数据(锁状态标记,gc分代年龄,hash码)与元数据指针,实例数据包括自定义字段、父类继承的字段

        虚拟机栈(独有)

          存放局部变量表、方法出口等,局部变量表包含基本数据类型(byte、short、int、long、double、float、char、boolean)与对象引用指针

        本地方法栈(独有)

          等同虚拟机栈

        程序计数器(独有)

          当前线程所执行的字节码的行号指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成

      垃圾收集

          收集垃圾的时机,由jvm自动控制

          判断对象已死:可达性分析(从一系列GC ROOT的集合往下搜索引用链,若不存在既对象已不再使用)、引用计数器

          分代收集理论:根据不同代的对象存活时间,采用不同的垃圾收集算法,年轻代-标记复制算法,老年代-标记整理算法

                 标记-清除算法(执行大量标记与清除的动作,效率低)、

                 标记-复制算法(使用Eden和其中一块Survivor区,根据朝升夕灭,将存活的对象移动到另一块Survivor区)、

                 标记-整理算法(标记所有不可用对象,所有存活的对象都向内存空间一端移动,然后直接清理掉边界以外的内存)

          垃圾收集器:serial收集器-单线程,收集垃圾时停止其它线程,暂停服务;parNew收集器-多线程的serial收集器;cms收集器-以最短暂停时间为目标的收集器

      类加载机制

        加载-连接(验证、准备、解析)-初始化-使用-卸载

          加载需要类加载器与类确定唯一类

        类加载器

          bootstrap加载器-jvm自带加载jdk下包,扩展类加载器-加载jre下包,系统类加载器-自定义可以继承实现的类加载器

        父类双亲委派模型

          加载类的时候,先交给父类加载,父类存在则返回,反之,交给子类;

          优点:保证了核心包的唯一性,不被篡改

      内存模型

          jvm虚拟了主存与工作内存,各线程共享主存,从主存读取变量,拷贝到工作内存,进行修改,这也是导致线程不安全的原因

      jvm常见参数

        -Xmx 最大堆大小 –Xms 最小堆大小 -XX:+PrintGCDetails 打印gc日志

  • 相关阅读:
    MySQL语句进行分组后的含有字段拼接方法
    架构基础
    自动化测试框架比较
    分布式系统中的概念--第一篇 一致性协议、一致性模型、拜占庭问题、租约
    如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?
    分布式系统常用思想和技术总结(转)
    常用的Hash算法
    Sonar + Jacoco,强悍的UT, IT 双覆盖率统计(转)
    AWK处理日志入门(转)
    内存管理
  • 原文地址:https://www.cnblogs.com/ruerror/p/13669854.html
Copyright © 2011-2022 走看看