zoukankan      html  css  js  c++  java
  • 《深入理解JAVA虚拟机》第三版 第二,三章 要点总结

    本文仅作为复习清单使用

    运行时数据区域

    线程私有 :程序计数器,JAVA虚拟机栈,本地方法栈
    线程共享 :堆,方法区,运行时常量池,直接内存
    

    内存分配方式

    指针碰撞
    空闲列表
    

    本地线程分配缓冲

    堆在某种程度上,也存在线程私有的部分哦

    对象的内存布局

    对象头 : Mark word,类型指针
    实例数据 
    对齐填充 :任何对象的大小都必须是8字节的倍数
    

    对象的访问方式

    句柄访问
    直接指针访问
    

    内存区域的异常

    内存泄露
    内存溢出
    

    jdk6,7中的常量池

    jdk6中,常量池位于永久代(方法区)
    jdk7中,常量池位于堆中
    jdk8中,元空间取代了永久代
    

    判断对象是否存活

    引用计数
    可达性分析
    

    GCRoot

    虚拟机栈中的对象
    类静态属性
    方法区常量
    本地方法引用的对象
    虚拟机内部引用
    被同步锁持有的对象
    反映JVM内部情况的JMXBean,JVMTI 中注册的回调,本地代码缓存等 (?)
    

    引用的分类::大佬博客

    强引用
    软引用    
    弱引用
    虚引用
    

    垃圾回收的过程

    1.判断是否可达;
    2.被标记,如果finalize()未被重写或者以及被执行过,直接进入第三步,否则,进入F-QUEUE,执行finalize()方法;
    3.若仍然不可达,则回收
    

    方法区的垃圾回收

    条件苛刻,详见P74

    分代假说

    弱分代假说:决大多数对象都是朝生夕灭的
    强分代假说:熬过越多次垃圾收集过程的对象就越难以消亡
    夸代引用假说:跨代引用相对于同代引用仅占极少数
    

    记忆集

    在新生代上,将老年代分为若干块,记录哪些块会存在跨代引用
    

    按分代的GC分类

    一.部分收集(Partial GC)
    1.新生代收集(Minor GC/Young GC)
    2.老年代收集(Major GC/Old GC)
    3.混合收集(Mixed GC)
    二.整堆收集(Full GC) 包括方法区

    垃圾清除算法

    标记-清除 
    标记-复制 (Eden,Survivor)
    标记-整理
    

    OOPMap

    记录对象中属性哪些是引用

    安全点(本人暂时无法理解)

    虽然暂时知道这是个什么东西,不过他为什么存在,我暂时无法理解.

    安全区域

    同上

    卡表

    记忆集的具体实现

    写屏障

    一个引用赋值的AOP切面

    解决并发标记时,引用改变的bug

    增量更新
    原始快照
    

    垃圾收集器

    JVM垃圾收集器总结

    对象内存分配与回收策略

    1.对象优先在Eden分配 (弱分代理论)
    2.大对象直接进入老年代:短命大对象对系统性能有影响
    3.长期存活的对象将进入老年代 (强分代理论)
    4.动态对象年龄判定: 并非完全按照年龄决定谁进入老年代
    5.空间分配担保:新生代内存不足,便直接把对象放入老年代
    

    其他知识点

    1.根节点枚举必须Stop The World
    2.准确式内存:虚拟机可以知道内存中的某个数据是什么类型的

  • 相关阅读:
    数组类的创建——DynamicArray.h
    顺序存储线性表的分析
    数组类的创建——StaticArray.h
    DynamicList
    StaticList
    顺序存储结构的抽象实现
    线性表的顺序存储结构
    29.无线接入网容量规划
    28.核心网容量规划
    27.IP承载网容量仿真
  • 原文地址:https://www.cnblogs.com/ZGQblogs/p/12578657.html
Copyright © 2011-2022 走看看