- 博客(6)
- 收藏
- 关注
原创 垃圾收集算法与垃圾收集器
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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人