
JVM
文章平均质量分 85
前尘忆梦Memory
这个作者很懒,什么都没留下…
展开
-
深入理解Java虚拟机——垃圾收集器
在学习Java虚拟机时,我们了解了常见的三种垃圾收集算法:标记-清除(Mark-Sweep)算法、标记-复制算法、标记-整理算法但是收集算法是内存回收的方法论,而圾收集器就是内存回收的实践者,接下来我们来了解一下常见的垃圾收集器,其中CMS、G1、ZGC垃圾收集器是我们关注的重点,其他的可以一笔带过。一、Serial收集器Serial收集器是最基础、历史最悠久的、单线程收集器,Serial收集器在进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。HotSpot虚拟机新生代默认的垃圾收原创 2021-02-01 15:21:14 · 203 阅读 · 0 评论 -
JVM——三色标记(Tri-color Marking)和写屏障
并发标记的主要问题是垃圾回收器在标记对象的过程中,用户线程可能正在改变对象引用关系图,从而造成漏标和错标。错标不会影响程序的正确性,只是造成所谓的浮动垃圾。但漏标则会导致可达对象被当做垃圾收集掉,从而影响程序的正确性。为了区别对象的不同状态,引入了三色标记法。一、三色标记(Tri-color Marking)垃圾收集器依据可达性分析算法判断对象是否存活时,将遍历GC Roots过程中遇到的对象,按照“是否访问过”这个条件,把对象标记成白色(white)、灰色(gray)、黑色(black)三种颜色,原创 2020-11-06 17:53:21 · 1167 阅读 · 0 评论 -
JVM虚拟机——G1垃圾收集器分区Region
G1之前的垃圾收集器都会将堆分成三个部分,新生代(Young Generation)、老年代(Old Generation)和永久代(Permanent Generation),根据不同的分区类型,采用不同的策略进行回收。G1仍然保留新生代和老年代的概念,但新生代和老年代不再是固定的了,它们都是一系列区域(不需要连续)的动态集合。G1把连续的Java堆划分为多个大小相等的独立区域(Region),每一个Region都可以作为新生代的Eden空间、Survivor空间,或者老年代空间。G1堆和操作系统原创 2020-09-23 16:27:31 · 4455 阅读 · 0 评论 -
JVM虚拟机——G1垃圾收集器介绍
G1垃圾收集器Garbage First收集器(简称G1),是一种服务端应用使用的垃圾收集器,目标是用在多核、大内存的机器上,它在大多数情况下可以实现指定的GC暂停时间,同时还能保持较高的吞吐量。可以与CMS收集器之类的应用程序线程并行运行。 紧凑的自由空间,无需较长的GC引起的暂停时间。 需要更多可预测的GC暂停时间。 不牺牲系统的吞吐量。 gc不要求额外的内存空间。G1收集器开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。G1收集器出现之前的所有其他收集器,将堆原创 2020-09-17 15:07:56 · 354 阅读 · 0 评论 -
Java虚拟机-JVM内存布局
一、程序计数器(Program Counter Register)程序计数器是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。字节码解释器通过改变计数器的值来选取下一条需要执行的字节码指令,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。Java虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,为了使线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,程序计数器为“原创 2020-08-13 09:59:56 · 189 阅读 · 0 评论 -
查看JVM默认垃圾收集器
一、查看JVM默认垃圾收集器java -XX:+PrintCommandLineFlags -version[root@jeespring ~]# java -XX:+PrintCommandLineFlags -version-XX:InitialHeapSize=132500800 -XX:MaxHeapSize=2120012800 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressed原创 2020-08-11 20:09:36 · 1741 阅读 · 1 评论 -
JVM性能调优监控jps、jstack、jmap、jhat、jstat详解
1、jpsjava提供的一个显示当前所有java进程pid的命令,我们可以通过它来查看我们到底启动了几个java进程。格式:jps [-q] [-mlvV] [<hostid>]-q : 只显示pid,不显示class名称、jar文件名、传递给main方法的参数 -m:输出传递给main方法的参数 -l :输出应用程序main class的完整package名或...原创 2020-02-14 00:30:35 · 569 阅读 · 0 评论 -
深入理解Java虚拟机-JVM参数
JVM的参数类型分为三类,分别是:标准参数、-X参数(非标准)、-XX参数(非标准)1、标准参数JVM的标准参数,一般都是很稳定的,在未来的JVM版本中不会改变,可以使用java -help查看所有的标准参数。[root@jeespring~]# java -help用法: java [-options] class [args...] (执行类) ...原创 2020-02-13 17:33:07 · 562 阅读 · 0 评论