自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM垃圾收集(二)

兄弟姐妹们,我三金哥又回来了,咋们这一章接着上次落下的继续分享! 三色标记 在并发标记的的过程中,因为有用户线程在跑,对象的引用可能会发生改变,从而可能会发生多标和漏标的情况。 所以这里引入三色标记这个概念,把gc roots可达性分析遍历对象过程中遇到的对象, 按照“是否访问过”这个条件标记成以下三种颜色: 黑色:对象已经被垃圾收集器访问过,并且已经全部扫描完成,代表他存活的对象,如果有其他对象引用指向了黑色对象, 无须重新扫描一遍 灰色:对象被垃圾收集器扫描过,但是至少有一个或以上的引用没扫描 白色

2021-09-26 17:33:58 79

原创 JVM垃圾收集(一)

对象内存回收 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)。 GC算法 引用计数法:给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加1;当引用失效,计数器就减1;任何时候计数器为0的对象就是不可能再被使用的。这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间相互循环引用的问题。 所谓对象之间的相互引用问题,如下面代码所示:除了对象objA 和 objB 相互引用着对方之

2021-09-18 16:26:14 94

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

对象的创建 对象创建的主要流程如下: 类加载检查 虚拟机在执行一条创建对象指令的时候,首先会检查这条指令参数在常量池中是否有相对应的符号引用,然后在判断符号引用对应得类是否被加载、解析和初始化过,如果没有被加载,就需要去执行加载类相应的流程 分配内存 内存分配有两种方式: 指针碰撞 如果Java堆中的内存是绝对规整的,已使用的放在一边,未使用的放在另外一边,在已使用和未使用的中间哪里有一个指示器,那所分配内存就仅仅是把那个指针向未使用空间那边挪动一段与对象大小相等的距离位置。 空闲列表 Java堆中的内

2021-09-16 15:14:21 318

原创 JVM内存模型

JVM内存模型划分 JVM划分为五个部分: 堆(heap):被所有线程共享的一块内存区域,在虚拟机启动的时候创建,用于存放对象实例,可以通过-Xmx 和-Xms控制大小 栈:每个方法在执行的时候都会创建一个栈帧,存储局部变量、操作数栈、动态链接、方法出口等 方法区:存放类信息、静态变量、常量等 本地方法栈:调用本地的Native方法时需要用到 程序计数器:记录正在执行方法的具体位置(虚拟机字节码指令的地址),如果是Natice方法,则为空 堆、方法区都是所有线程共享的,其他的则都为线程私有 如下图所示

2021-09-15 10:48:56 99

原创 JVM类加载机制

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-09-13 10:45:09 172

空空如也

空空如也

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

TA关注的人

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