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日志

  • 相关阅读:
    Python基础知识(day3)
    前端开发工具Brackets介绍,安装及安装Emme插件时踩过的坑
    AngularJs学习笔记2-控制器、数据绑定、作用域
    AngularJs学习笔记1——总体介绍
    AngularJs学习笔记0——前言
    Oracle常用几种Sql用法
    个人2015年工作计划
    C#语法糖之第六篇: 泛型委托- Predicate<T>、Func<T>
    C#语法糖之第五篇: 泛型委托- Action<T>
    C#语法糖之第三篇: 匿名类 & 匿名方法
  • 原文地址:https://www.cnblogs.com/ruerror/p/13669854.html
Copyright © 2011-2022 走看看