jvm

作者: ThomasAAnderson | 来源:发表于2019-08-13 11:42 被阅读0次

类加载机制

类的生命周期:加载,链接,初始化,使用,卸载

类加载器:(待补充)

双亲委派模型:当类加载器试图加在某个类时,尽量将任务代理给当前加载器的父加载器去做,目的是为了避免重复加载java类型

JVM内存结构

jvm内存模型:

    堆(线程共享):对象

    方法区(线程共享):静态变量+常量+方法区,具体实现是matadata

    栈(线程私有):局部变量

    本地方法栈(线程私有):

    程序计数器(线程私有):

对象分配规则

对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC。 长期存活的对象进入老年代。虚拟机为每个对象定义了一个年龄计数器,如果对象经过了1次Minor GC那么对象会进入Survivor区,之后每经过一次Minor GC那么对象的年龄加1,知道达到阀值(默认15)对象进入老年 区。每次进行Minor GC时,JVM会计算Survivor区移至老年区的对象的平均大小,如果这个值大于老年区的剩余值大小则进行一次Full GC,

内存占比:

新生代(占1/3堆空间):伊甸园80%,幸存者20%

老年代(占2/3堆空间):15次gc放到

线程间通信:

    1,线程a把本地内存中更新过的共享变量刷新到主内存中去

    2,线程b去主线程读取线程a更新过的共享变量

判断一个对象是否存活:

    引用计数法,每个对象一个引用计数器,每有个地方引用此对象,计数器就加一,引用失效减一,引用为零将会被回收

    可达性算法(引用链):(待补充)

常见gc算法:

标记清除算法:算法分为标记和清除两个阶段,首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象

复制算法:将内存按容量分为相等的两份,每次使用其中一份,当这份内存用完了,就将存活的对象复制到另一块内存上面,然后吧使用过的内存清除掉

标记-压缩算法:过程与标记清楚算法类似,区别是所有存活的对象向另一端移动,然后清理端边界以外的内存

分代收集算法:java的堆分为新生代和老生代,不同代采用合适的算法

jvm调优:

就是尽量减少gc出现

相关文章

  • 深入JVM内核 目录

    深入JVM内核 目录 深入JVM内核1 初识JVM深入JVM内核2 JVM运行机制深入JVM内核3 常用JVM配置...

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

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

  • Jvm(一)-Java虚拟机的内存管理

    [toc] JVM JVM回顾 1. 什么是 JVM JVM是Java Virtual Machine(Java虚...

  • JVM介绍系列文章

    知晓JVM系列(一):对JVM总览知晓JVM系列(二):JVM内存管理机制与优化初探知晓JVM系列(三) :常用的...

  • 科普

    1.JVM/JRE/JDK关系JVM

  • JVM

    JVM之内存模型JVM之对象定位与访问JVM之Java垃圾回收机制JVM之类加载

  • JVM

    栈容量由-Xss指定深入理解JVM—JVM内存模型 JVM内存模型和JVM参数的关系

  • JVM基础知识系列

    JVM基础系列 JVM知识点扫盲系列(1) JVM知识点扫盲系列(2) JVM内存的那些事 JVM类加载的那些事 ...

  • (过时、作废)android 多线程 — GC

    简单解析下JVM 先说下 JVM,虽然上篇文章在讲内存时介绍了 JVM ,但是我在这里还是以 JVM 开头,JVM...

  • 技术文章罗列

    JVM JVM知识点详解JVM初步诊断JVM内存模型 Java Api java8 stream Api讲解(上)...

网友评论

    本文标题:jvm

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