目录

Jvm gc

收集算法

引用计数法

实现方式

问题:

可达性分析算法

回收算法

标记回收 mark-Sweep

复制算法

标记整理法

回收器组合 年轻带 老年代

Serial 单线程的

Parallel Scavenge

CMS 并发 年轻代是 ParNew

G1 垃圾收集器

查看java 使用了那种 jvm

jvm数据区内存结构

线程共享区

方法区

存放内容

分析方法去对象方法(可以看到字节码指令和常量池的值):

堆区

线程独立区

java栈区

程序技术器

本地方法栈

运行流程



Jvm gc

新生代

minorgc

老年代gc

majorgc

收集算法

引用计数法

实现方式

引用数量无引用的时候 gc

问题:

俩个类互相应用则无线留存了

可达性分析算法

从堆内存跟对象扫描看那些是可达的耐饿是不可达的,无法到达的则是垃圾了
          栈中引用对象、类静态属性对象、常量引用对象、native方法引用对象

回收算法

标记回收 mark-Sweep

会出现大量碎片 旧了后需要重启服务

复制算法

内存使用空间较大

标记整理法

标记的工作增加整理碎片工作

回收器组合 年轻带 老年代

Serial                         Serial old

parallel Scavenge        parallel old

parNew                              CMS

G1

Serial 单线程的

执行时候用户现场需要暂停,卡顿太久

Parallel Scavenge

多线程  也会暂停  虽然少点也会暂停

CMS 并发 年轻代是 ParNew

并发用户线程 标记根对象的第一层 防止错误标记 运行重新标记 并发清理

G1 垃圾收集器

STW 暂停时间可以设置 会尽量朝这个时间运行但不保证

将堆内存划分为若干等大小区域,区域数量默认2048

保留 伊甸园、幸存者、老年代,但不是物理化连续的空间

这块区域被谁使用属于什么区域,如:年轻代清空,老年带使用就成了老年代。所以空间不再是绝对固定的

因此gc扫描不用扫描整个区域而是扫描指定区域

g1主要面向大内存使用的

g1 会根据设定的最大stw时间来调整策略

stw时间短 导致 GC频繁 会导致 吞吐量下降

如果业务场景对响应较高的化就需要对车略进行优化

区域之间也是采用复制算法,直接进行碎片处理

大对象存放到Hotspot

因为不用扫描全部内存所以stw暂停时间非常短的

重复标记使用的是三色标记算法实现最终标记

查看java 使用了那种 jvm

java -XX:+PrintCommandLineFlags -version

C:\Users\ext.jianghaoyu1>java -XX:+PrintCommandLineFlags -version

-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:+PrintCommandLineFlags -XX:-UseLargePagesIndividualAllocation

java version "1.8.0_131"

Java(TM) SE Runtime Environment (build 1.8.0_131-b11)

Java HotSpot(TM) Client VM (build 25.131-b11, mixed mode)

C:\Users\ext.jianghaoyu1>

oracle 1.8 的 就是 HotSpot

jvm数据区内存结构

线程共享区

方法区

存放内容

类的修饰、权限、继承关系、接口列表、字段信息、声明的顺序、修饰符、类型、名字、方法的修饰符、返回值、名字、参数列表、抛出的异常、方法字节码指令、静态变量

类加载器,加载到方法区

常量池final 不可变的变量值

分析方法去对象方法(可以看到字节码指令和常量池的值):

编译类:

javac xx.java

反汇编(生成类相关信息)

javap -v xx

Constant pool 常量池 不可变的都会到这里

字节码指令

堆区

新生代

伊甸区

拷贝空间中间是剩下的是碎片

幸存区0

物理环境固定的可排序

幸存区1

整理拷贝到幸存区连续这 使用状态

老年代

幸存区回收多次还没被回收则是长期存在的放到老年代

线程独立区

java栈区

栈帧

java 方法栈区 jni接口 规范 调用 本地方法栈 (代码编译后就是这个)

序号、字节码指令

序号、局部变量表、           操作数栈

运行中加载值              运算值

运行中加载值              运算值

程序技术器

pc计数器(当前执行位置 )

序号、字节码命令

使用地址对字节码指令追踪

本地方法栈

栈帧

跟java 栈类似,针对C 等语言的本地方法栈

运行流程

程序计数器 调用 方法区中的 顺序字节码指令 顺序执行 从java 栈区放运行中的值和运算值,从上往下顺序运行

ok

持续更新

jvm gc回收器 和 jvm 数据结构相关推荐

  1. jvm gc策略_IBM JVM调整– gencon GC策略

    jvm gc策略 本文将向您详细介绍从Java虚拟机(例如HotSpot或JRockit)迁移到IBM JVM时重要的Java堆空间调整注意事项. 此调整建议基于我为我的一个IT客户端执行的最新故障排 ...

  2. JVM GC原理解析

    JVM GC原理 1.JVM 的内存空间,从大的层面上来分析包含:新生代空间和老年代空间. 新生代空间又被分为2各部分(Eden区域.Survious区域) 和3个板块(1个Eden区域和2个Surv ...

  3. 深入详解JVM内存模型与JVM参数详细配置

    本系列会持续更新. JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内 ...

  4. 直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置

    JVM基本是BAT面试必考的内容,今天我们先从JVM内存模型开启详解整个JVM系列,希望看完整个系列后,可以轻松通过BAT关于JVM的考核. BAT必考JVM系列专题 1.JVM内存模型 2.JVM垃 ...

  5. 【JVM · GC】垃圾回收器

    1. GC分类与性能指标 1.1 垃圾回收期器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商.不同版本的JVM来实现. 由于 JDK 版本处于高速迭代过程中,因此Java 发展至今已经衍 ...

  6. JVM内存模型与GC回收器

    1.JVM内存模型 JVM内存模型如上图,需要声明一点,这是<Java虚拟机规范(Java SE 7版)>规定的内容,实际区域由各JVM自己实现,所以可能略有不同.以下对各区域进行简短说明 ...

  7. JVM 垃圾回收器工作原理及使用实例介绍

    2019独角兽企业重金招聘Python工程师标准>>> 垃圾收集基础 Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况.自 ...

  8. JAVA之JVM GC 机制与性能优化

    1 背景介绍 与C/C++相比,JAVA并不要求我们去人为编写代码进行内存回收和垃圾清理.JAVA提供了垃圾回收器(garbage collector)来自动检测对象的作用域),可自动把不再被使用的存 ...

  9. 备战面试日记(2.4) - (JVM.GC算法)

    本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.2 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...

最新文章

  1. Jquery里live事件移除原因
  2. 计算机AL教程笔记,计算机系统基础学习笔记(2)-数据的位运算操作
  3. PCA人脸识别的python实现
  4. 技术部门Leader是不是一定要技术大牛担任?
  5. Linux 的虚拟文件系统(强烈推荐)
  6. 【python】r+,w+ 全局变量
  7. 使用exp导出导入,需要注意的问题。
  8. python文件管不了_Python对文件和文件路径的管理
  9. 笨办法学 Python · 续 练习 5:`cat`
  10. 诺基亚指控联想侵权;格力回应“被中国移动取消中标资格”;微软暂停更新 Edge 浏览器 | 极客头条...
  11. Linux内核部件分析 设备驱动模型之bus
  12. swf文件的反编译或着flash文件的反编译
  13. 笔记本如何不按Fn键就能实现F键的功能
  14. xp系统禁止开机启动服务器,Window XP 开机启动超慢,哪些系统服务和进程可以禁用?...
  15. 如何学计算机打字,电脑如何快速学会打字
  16. 呆萝卜与每日优鲜竞品分析
  17. 微信开发者工具测试小程序
  18. 企业高频实用API推荐
  19. windows 实时自动同步两个文件夹
  20. JS获取当前使用的浏览器名字以及版本号

热门文章

  1. 好用的标图工具LabelImage
  2. 比亚迪半导体终止IPO:​曾计划募资27亿 红杉小米是股东
  3. 90_通过社保一点通代缴社保,付款成功后订单记录中没有内容
  4. Unable to find rebel.xml in artifact eui:war. This file is required to enable JRebel reloading.
  5. 多程序库计算机,单元程序库
  6. 51单片机通过计时器实现倒计时
  7. Windows设置多用户同时远程登录
  8. 奇怪的比赛(某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答)
  9. Mybatis配置及动态SQL语句标签
  10. CMD获取当前目录路径