美文网首页
Java笔记4--JVM&GC

Java笔记4--JVM&GC

作者: 执壹 | 来源:发表于2019-07-23 03:19 被阅读0次
image.png image.png

垃圾回收算法

1.引用计数法

image.png

2.复制算法 (新生代)

image.png

复制活的到空的(复 活)

image.png

复制之后有交换,谁空谁是To (To 0 --->往占用0的位置挪)
优点:没有产生内存碎片, 缺点:大对象复制耗时(所以用于新生代)

3.标记清除法 (老年代)

image.png

4.标记整理法 (老年代)

image.png image.png t

GC Roots 一定是从Roots开始的

可以作为GC Root的对象

image.png image.png

盘点家底查看 JVM 默认值

  • 查看初始默认值:-XX:+PrintFlagsInitial
ginseng@ginseng-pc:~/Project/demo$ java -XX:+PrintFlagsInitial
[Global flags]
    intx ActiveProcessorCount                      = -1                                  {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
    uintx AdaptiveSizePausePolicy                   = 0                                   {product}
    uintx AdaptiveSizePolicyCollectionCostMargin    = 50                                  {product}
    uintx AdaptiveSizePolicyInitializingSteps       = 20                                  {product}
    uintx AdaptiveSizePolicyOutputInterval          = 0                                   {product}
    uintx AdaptiveSizePolicyWeight                  = 10                                  {product}
   ...
  • 查看修改更新:-XX:+PrintFlagsFinal
bool UsePSAdaptiveSurvivorSizePolicy           = true                                {product}
bool UseParNewGC                               = false                               {product}
bool UseParallelGC                            := true                                {product}
bool UseParallelOldGC                          = true                                {product}
bool UsePerfData                               = true                                {product}
bool UsePopCountInstruction                    = true                                {product}
bool UseRDPCForConstantTableBase               = false                               {C2 product}

= 与 := 的区别是,一个是默认,一个是人物改变或者 jvm 加载时改变的参数

工作中常用的 JVM 配置参数

image.png

永久代用的是JVM的堆内存

通过-XX:+PrintGCDetails查看GC收集日志


image.png image.png image.png image.png image.png image.png

该参数范围只能设置0~15(java8)

引用

image.png

强引用

image.png

软引用

image.png

弱引用

image.png

软/弱引用使用场景

image.png

虚引用

image.png

GC Roots和四大引用总结

image.png

OOM(常见)

image.png image.png

GC Overhead

image.png

Direct buffer memory

image.png

通常因为NIO导致

unable to create new native thread

image.png

Metaspace

image.png

GC 收集器

image.png

其中,G1收集器是将堆内存分割成不同的区域然后并发的对其进行垃圾回收.

image.png

java8

image.png image.png

新生代收集器

image.png image.png image.png image.png image.png image.png

老年代收集器

image.png image.png

CMS4步过程


image.png

1.初始标记


image.png

2.并发标记

image.png

3.重新标记


image.png

4.并发清除

image.png

四步总结


image.png

CMS优缺点:
优:并发收集低停顿

缺:1.采用标记清除算法会导致大量内存碎片
2.并发执行对CPU压力大


image.png

缺点主要原因

如何选择垃圾收集器

image.png

G1收集器

image.png image.png image.png image.png

特点


image.png

G1底层原理

image.png image.png image.png image.png image.png

回收步骤


image.png image.png

四步


image.png

G1较与CMS的优势

image.png

相关文章

  • Java笔记4--JVM&GC

    垃圾回收算法 1.引用计数法 2.复制算法 (新生代) 复制活的到空的(复 活) 复制之后有交换,谁空谁是To ...

  • nio

    参考文章 Java Nio Java NIO学习笔记 - NIO客户端时序图 Java NIO学习笔记 - NIO...

  • Java 学习笔记(13)——lambda 表达式

    title: Java 学习笔记(11)——lambda 表达式tags: [Java 基础, 学习笔记, 函数式...

  • java io

    参考Java IO学习笔记(一):File类Java IO学习笔记(二):RandomAccessFile类Jav...

  • Java学习日记

    title: Java学习笔记date: 2018-05-18 12:00:00tags: Java 学习笔记 P...

  • Guava 中的文件操作:Files

    本片内容收录在我的在线笔记 java-note-for-free 中。 笔记源文件在 gitee 中。 Java ...

  • 2018-02-04@JAVA

    JAVA初始 ——浙大MOOC《从零开始学Java》Java笔记系列1 Java世界的hello world 新建...

  • Jasypt非对称加密

    Jasypt: Java Simplified Encryption 本笔记介绍使用Jasypt: Java Si...

  • java学习笔记-日志篇

    java学习笔记-日志篇-目录 java日志篇(1)-日志概述 java日志篇(2)-JUL(java.util....

  • 小白学java

    目录 1、配置java 环境2、java代码规范3、java笔记4、java程序编写 配置java环境 1、下载j...

网友评论

      本文标题:Java笔记4--JVM&GC

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