JVM
文章平均质量分 92
程铭程铭你快成名
这个作者很懒,什么都没留下…
展开
-
G1这么强,你确定不了解一下?
中国武术有句名言:“内练一口气,外练筋骨皮”,修炼内功可以让自己比变得更强!本文将全面的带领大家了解一下G1这款垃圾收集器,在正式了解G1之前,我们先来回顾一下垃圾回收的相关基础知识。如何定位内存中不再使用的对象各位小伙伴都知道Java是支持垃圾对象自动回收,不需要开发者手动去进行垃圾对象回收,用起来真的是舒服的不要不要的。那么问题了,Java是怎么做到识别内存中不再使用的垃圾对象呢?通常有两种方法:引用计数法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值+1;当引用失效时,计数器原创 2021-07-19 11:59:55 · 3742 阅读 · 0 评论 -
探秘ZGC
探秘ZGC原创 2021-06-16 14:55:23 · 3380 阅读 · 0 评论 -
面试官:说说你了解哪些JDK自带的命令行工具
不看不知道,一看吓一跳,原来JDK自带了这么多工具,本文主要介绍一下工作中常用的JDK工具以及使用方法和使用场景。原创 2020-07-16 16:28:51 · 9955 阅读 · 0 评论 -
面试官:说说你了解的OOM异常以及解决方案
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区都会发生OOM异常的可能,本文通过几个例子来了解一下虚拟机常见的OOM异常。本文的代码参考《深入理解Java虚拟机(第二版)》Java堆溢出Java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免避免垃圾回收清除对象,那么这些对象达到最大堆的容量限制之后就会产生内存溢出异常。设置VM参数,方便导出dump文件分析-Xms20m //JVM初始分配的内存20m-Xmx20m原创 2020-07-15 10:55:23 · 10280 阅读 · 0 评论 -
线上服务的FGC问题排查,看这篇就够了!
原文链接:https://mp.weixin.qq.com/s/I1fp89Ib2Na1-vjmjSpsjQ转载 2020-07-13 18:16:38 · 563 阅读 · 0 评论 -
YGC问题排查,又让我涨姿势了!
原文链接:https://mp.weixin.qq.com/s/O0l-d928hr994OpSNw3oow转载 2020-07-13 18:13:49 · 489 阅读 · 0 评论 -
单核CPU, 1G内存,也能做JVM调优吗?
原文链接:https://mp.weixin.qq.com/s/zgZvKtoLJi-p-WqFk68lCw转载 2020-07-13 17:23:19 · 610 阅读 · 1 评论 -
小白搞懂了GC全过程,全靠阿里专家12张图
原文链接:https://mp.weixin.qq.com/s/KWxW66XtsiEnjb0sqL-isg转载 2020-07-13 16:48:14 · 9362 阅读 · 2 评论 -
一看就懂的Java对象四种引用方式总结
这应该是一道很常见的面试题,但是有些小伙伴也不一定能很好的说清楚Java对象四种引用方式,这边文章总结Java四种引用方式,希望可以帮到有缘人,哈哈。强引用StrongReference这种方式是平时工作中应用最多的一种引用方式。其特点是只要GC Root可达,就不会被回收,及时内存空间不足了,也只会抛出OOM的异常,并不会被回收。通常的用法就是Objec obj = new Object()。如果想中断或者回收强引用对象,可以显式地将引用赋值为null,这样的话JVM就会在合适的时间,进行垃圾回收。原创 2020-07-06 16:50:50 · 9634 阅读 · 0 评论 -
JVM学习笔记——类加载器
什么是类加载器,类加载器有哪些?实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。主要有以下四种类加载器:启动类加载器(Bootstrap ClassLoader):用来加载java核心类库,无法被java程序直接引用。扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在...原创 2020-01-20 14:56:01 · 1745 阅读 · 0 评论 -
JVM学习笔记——类加载过程
一个Class在虚拟机中的完整生命周期如下图所示:加载加载一个Class需要完成以下3件事:通过Class的全限定名获取Class的二进制字节流将Class的二进制内容加载到虚拟机的方法区在内存中生成一个java.lang.Class对象表示这个Class校验验证一个Class的二进制内容是否合法,主要包括4个阶段:文件格式验证,确保文件格式符合Class文件格式的规范。如...原创 2020-01-20 14:42:24 · 1581 阅读 · 0 评论 -
JVM学习笔记——G1
什么是G1Garbage-First收集器是一个并行、并发和增量压缩低停顿的垃圾收集器。G1的Java堆布局和HotSpot VM中其他垃圾收集器有着极大的不同,它将Java的堆分成相同的块(称为区域,Region)。G1也是分代的,但整体上没有划分成新生代和老年代。相反,每代是一组(可能不连续)的Region,这使得它可以灵活地调整新生代。为什么需要了解G1?因为G1是JDK 11默认...原创 2019-12-25 10:40:56 · 1873 阅读 · 0 评论 -
JVM学习笔记——内存分配和回收策略
优先在Eden区分配。新生代一般分为一个Eden加两个Survivor,默认比例8:1:1大对象直接进入老年代。因为新生代一般使用复制算法,如果对象太大,在新生代复制的代价非常高,而且占内存。常见的大对象有:很大的字符串、很大的byte数组(比如图片等转成的字节数组)。长期存活的对象进入老年代。对象头有一个字段存放了对象的“年龄”信息,对象在新生代每经过一次Minor GC,就会+1,当它的...原创 2019-12-10 17:01:47 · 1437 阅读 · 0 评论 -
JVM学习笔记——常见的垃圾收集器
上图为虚拟机包含的所有垃圾收集器。新生代:Serial:单线程,新生代串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收新生代、老年代使用串行回收新生代复制算法老年代标记-压缩-XX:+UseSerialGCParNew: 多线程,新生代Serial收集器新生代的并行版本,在新生代回收时使用复制算法,多线程,需要多核支持-XX:...原创 2019-12-10 16:43:15 · 2679 阅读 · 0 评论 -
JVM学习笔记——垃圾回收算法
引用计数算法(Reference Counting)给对象添加一个引用计数器,每当一个地方引用它时,数据器加1;当引用失效时,计数器减1;计数器为0的即可被回收。优点是实现简单,判断效率高缺点是很难解决对象之间的相互循环引用(objA.instance = objB; objB.instance = objA)的问题,所以java语言并没有选用引用计数法管理内存可达性分析算法(GC Roo...原创 2019-12-10 16:15:21 · 2895 阅读 · 1 评论 -
JVM学习笔记——如何判断对象已死(GC标记)?
有两种方法,分别为:引用计数法和可达性分析法引用计数算法给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值+1;当引用失效时,计数器值-1,任何时刻计数器值为0的对象就是不能再被使用的。此方式高效简单,但不能解决循环引用的问题。借助《深入理解Java虚拟机》书中的例子: public class TestGC { public Object instan...原创 2019-12-10 10:54:31 · 3134 阅读 · 0 评论 -
JVM学习笔记——栈(Stacks)
Java中的栈分为Java虚拟机栈和本地方法栈。Java虚拟机栈是线程私有的,它的生命周期和线程一样。虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量、操作数栈、动态链接、方法出口等信息。每一个方法从调用到执行完毕的过程,就意味着一个栈帧在虚拟机栈中入栈到出栈的过程。本地方法栈和Java虚拟机栈的作用基本是相同的,他们之间的区别不过是Java虚...原创 2019-12-05 17:03:06 · 1581 阅读 · 0 评论 -
JVM学习笔记——什么是JVM?
JVM(Java Virtual Machine,Java虚拟机)JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语...原创 2019-12-04 17:16:11 · 1636 阅读 · 0 评论 -
JVM学习笔记——堆(Heap)
在上一篇文章中说到了什么是栈,栈内存中是连续的空间,保存一个个的栈帧,对应一次次方法的调用;还讲到了他是保存对象的引用,那么对象存在哪里呢?我们来看看昨天的一张图:对象就存在图中的内存区域,在JVM中,那片区域叫做堆!由图中可以看到堆的存储结构和栈是不同的,堆在内存中并不是一块连续的区域,他是分散的(物理上是分散,但逻辑上是连续的,大家好好体会一下);虚拟机通过栈中引用的指引在堆中找到所需...原创 2019-12-10 10:48:00 · 1504 阅读 · 0 评论