自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 垃圾收集器G1和ZGC

跨代引用(新生代被老年代引用),扫记忆集,卡表解决 G1:将堆划分为相等的独立区域Region(默认分2048份)

2022-02-17 16:36:55 195

原创 垃圾收集算法与垃圾收集器

GC算法:复制、标记整理、标记清除都基于分代收集理论 复制:效率是标记算法的十倍以上;年轻代存活率低用复制,浪费一半空间; 标记清除:标记太多效率不高,产生碎片 标记整理:避免碎片,内存规整 GC收集器 :串行(Serial)——并行(Parallel【JDK8默认】)——CMS——G1不断完善 配置JVM参数即可选择GC收集器 CMS(并发收集、低停顿)底层实现:初始标记【STW,根据GCroots标记所有直接引用对象】——并发标记【继续标记引用对象,并行阶段对象可能会复活】——重新标记.

2022-02-17 15:22:07 111

原创 JVM内存分配机制

对象的创建:类加载检查(没加载则加载)——分配内存——初始化——设置对象头——执行init方法 分配内存(指针碰撞【内存规整】:分界指针挪动对象大小的过程;空闲列表:表中分配一个可容纳对象的内存并更新) CAS多线程抢一个内存,未抢到的继续重试;TLAB本地线程分配缓冲,给线程提前分配内存,分区进行 减少临时对象给堆的GC造成的压力:通过逃逸分析(分析作用域,是否外部调用的,线程结束即销毁),不会逃逸的分配给栈 标量替换:解决没有足够大的内存存放对象,将对象分解为若干成员变量存放的过程 大对象直.

2022-02-17 12:13:43 182

原创 JVM整体结构

JVM虚拟机组成:运行时数据区(内存模型)、类加载子系统、字节码执行引擎 运行时数据区组成:堆、方法区(共享);栈、本地方法栈、程序计数器(独立于线程) 反编译命令:javap -c User.class 方法运行(启动一个线程)——栈帧内开辟内存空间(进出栈结构先进后出)——栈帧内有:局部变量表、操作数栈、动态链接、方法出口 Integer a=1过程: a存在局部变量表——1进入操作数栈——赋值的时候1出栈,进入局部变量表中赋值 程序计数器:记录程序执行的具体步骤编号 静态变量如果是..

2022-02-17 10:29:36 130

原创 JVM性能调优——类加载机制

类加载原理: javaBeen.java——javaBeen.class(字节码)——jvm.dll创建jvm虚拟机(C++)——创建引导类加载器(C++)——调用Launcher类的getLauncher方法 ***.java——编译打包——***.class字节码—(加载【内存生成对象,不用不加载】-验证【字节码文件正确性】-准备【静态变量分配内存,并赋默认值】-解析【符号引用替换成直接引用静态链接、动态链接是运行时替换】-初始化【变量赋指定值,执行代码块】)—jvm内存 构造方.

2022-02-16 17:23:45 126

原创 JAVA架构师学习路线

java基础——spring——mybatis——性能调优——并发编程——源码框架——分布式——微服务

2022-02-16 13:17:27 142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除