自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于深入理解JMM与并发三大特征

Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以此来实现Java程序在各种平台下都能达到一致的并发效果。JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何及何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步地访问共享变量。JMM描述的是一种抽象的概念,一组规则,通过这组规则控制程序中各个变量在共享数据区域和私有数据区域的访问方式,JMM是围绕原子性、有序性、可见性展开的。

2022-10-31 23:13:28 175

原创 关于垃圾收集器ZGC的扩展

为了满足不同的业务需求,Java 的 GC 算法也在不停迭代,对于特定的应用,选择其最适合的 GC 算法,才能更高效的帮助业务实现其业务目标。对于这些延迟敏感的应用来说,GC 停顿已经成为阻碍 Java 广泛应用的一大顽疾,需要更适合的 GC 算法以满足这些业务的需求。近些年来,服务器的性能越来越强劲,各种应用可使用的堆内存也越来越大,常见的堆大小从10G到百G级别,部分机型甚至可以到达TB级别,在这类大堆应用上,传统的GC,如CMS、G1的停顿时间也跟随着堆大小的增长而同步增加,即堆大小指数级增长时,停

2022-10-29 22:21:45 307

原创 关于垃圾收集器G1与ZGC

G1(Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多个处理器及大容量内存的机器,以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能的特征。G1将Java堆划分为多个大小相等的独立区域(Region),JVM最多可有2048个Region。一般Region大小等于堆大小除以2048,如对大小为4096M,则Region大小为2M。-XX:G1HeapRegionSize:手动指定Region大小,推荐不指定,使用默认计算方式。G1保留年轻代和老年代的概念,但不再使用物理隔阂,

2022-10-28 23:07:53 1695

原创 关于垃圾收集算法与垃圾收集器ParNew与CMS

当前虚拟机的垃圾收集均采分代收集算法,根据对象存活周期的不同将内存分为几块。Java堆分为老年代和年轻代,可根据各自特点选择合适的垃圾收集算法。例如年轻代中,每次收集都会有大量对象被回收,所以可选择复制算法,只需付出少量对象的复制成本便可完成每次的垃圾收集。老年代中,对象存活几率比较高,且没有额外空间对其进行分配担保,因此必须选择标记-清除算法或标记-整理算法进行垃圾收集。标记-清除 或 标记-整理 比 复制算法 慢10倍以上。复制算法,标记-清除算法、标记-整理算法

2022-10-15 00:30:51 1032

原创 关于JVM对象创建与内存分配机制

1. 类加载检查:当虚拟机接收到一条new指令时,会先检查这个指令的参数是否能在常量池中定位出一个类的符号引用,并且检查此符号引用指代的类是否已被加载、解析和初始化,若没有,则执行类加载过程。2. 分配内存:类加载检查通过后,虚拟机将为新生对象分配内存。对象所需内存大小在类加载完成后便以确定,为对象分配空间的任务相当于将一块同等大小的内存从Java堆中划分出来。3. 初始化:虚拟机将分配到的内存空间初始化为零值(不包括对象头),若使用TLAB,此工作过程即可提前到TLAB分配时进行。4. 设置对象头虚拟机需

2022-10-08 14:18:09 500

原创 关于JVM整体结构

一、线程栈:当运行main方法时便会启动主线程,此时会在栈内开辟一块独立内存空间供其使用,即线程栈,用来存放内部局部变量。局部变量表:存放方法内部的局部变量。操作数栈:存放具体的值,即字面量。动态链接:当程序执行到符号时(例如compute方法),会将compute方法的符号引用替换成直接引用,即指向compute方法内部的代码指令加载到方法区的常量池内所生成的内存地址。方法出口:存放方法结束位置的信息,当方法结束之后根据此信息继续往下执行代码。例如compute方法执行完毕之后会找到结束位置,继续往下执行

2022-10-08 14:12:40 105

原创 关于从JDK源码剖析JVM类加载机制

需继承 ClassLoader;两大核心方法:①loadClass(String, boolean),实现了双亲委派机制;②,默认实现为空方法,需进行重写try {// defineClass 将一个字节数组转为 Class 对象,此字节数组是 class 文件读取后最终的字节数组 return defineClass(name , data , 0 , data . length);

2022-10-08 12:40:05 381 1

空空如也

空空如也

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

TA关注的人

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