JVM篇

作者: 南蛮小白 | 来源:发表于2018-04-07 16:31 被阅读0次

一、java内存区域的组成

程序计数器,线程私有,用来存储线程执行到哪条字节码指令;

栈,线程私有,存储局部变量,方法出口,操作数栈,动态链接等;

堆,线程共有,垃圾回收的主要区域,存储对象实例;

本地栈,跟栈相似,区别在于执行的是本地的方法;

方法区,线程共有,存放静态变量,类信息,常量,1.8之前,属永久代,1.8之后,用元空间代替;

运行时常量,方法区一部分,存放字面量以及乳引用。

二、对象的创建

指针碰撞法:内存工整,通过挪动指针来增加内存;

空闲列表法;内存不工整,维护列表记录哪些内存是可用的。

三、对象分配的线程安全

CAS+失败重试

通过TLAB(本地线程分配缓冲)预分配内存,每个线程划分不同区域的内存,只有当TLAB用尽了,才同步锁定。-XX:+/-UseTLAB参数设定

四、对象内存布局

对象头+实例数据+对齐填充

五、对象访问

直接访问,对象引用直接指向堆得对象实例地址,优点:快;缺点:GC之后,堆的实例地址发生改变,需修改引用。HotSpot默认;

句柄访问,对象引用指向堆的句柄池,缺点:多了一次指针定位;优点,不需修改对象引用。

六、对象的回收

引用计数法

可达性算法分析

七、GC回收算法

标记-清除;标记,清除,产生碎片内存,有大对象时,容易引发fullGC

复制算法;新生代的常用算法,分为2个Survivor、1个Eden(1:1:8默认)

标记-整理;标记,整理

八、垃圾收集器

Serial;简单、高效;但单线程。新生代:复制算法;

Parnew;Serial的多线程版本。新生代:复制算法;

Parallel Scavenge;吞吐量优先。新生代:复制算法;

Serial Old;搭配Parallel Scavenge;CMS备用方案。老年代:标记-整理。

Parallel Old;Parallel Scavenge老年代。

CMS:初始标记→并发标记(NO STW)→重新标记→并发清除(NO STW)。老年代:标记-清除。

G1:

相关文章

  • JVM内存模型(jvm 入门篇)

    概述 jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,...

  • Java——JVM篇——收藏系列来啦(终结篇)

    转自:Java——JVM篇——收藏系列来啦(终结篇)侵删。 2.9.JVM 类加载机制 JVM 类加载机制分为五个...

  • 2020-04-03 JVM垃圾回收相关文章引用

    这三篇文章总结的非常到位,收藏在这里。 Jvm垃圾回收器(基础篇) Jvm垃圾回收器(算法篇) Jvm垃圾回收器(...

  • Java工程师成神之路

    基础篇进阶篇高级篇架构篇扩展篇推荐书籍 基础篇 一、基础篇JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈...

  • Java大佬之学习历程(一)

    基础篇 JVM: ①JVM内存结构: 堆、栈、方法区、直接内存、堆和栈区别, ②JVM参数及...

  • JVM优化篇之堆内存模型

    上一篇中讲了JVM的基本参数含义JVM优化篇之参数,这一篇我们来聊一聊JMM(java内存模型).jvm的堆内存模...

  • 万字长文把[JVM]从头到尾讲一遍

    第一篇:[JVM入门指南01]内存区域与溢出异常——主要介绍JVM的运行时数据区第二篇:[JVM入门指南02]GC...

  • jvm内存结构

    更多参考:一篇简单易懂的原理文章,让你把JVM玩弄与手掌之中关于JVM的类型和模式jvm系列 (一) ---jvm...

  • JVM篇

    内存模型 JVM所管理的内存分为以下几个运行时数据区:程序计数器(PC寄存器)、Java堆、方法区(包含常量池)、...

  • JVM篇

    一、java内存区域的组成 程序计数器,线程私有,用来存储线程执行到哪条字节码指令; 栈,线程私有,存储局部变量,...

网友评论

      本文标题:JVM篇

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