![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java虚拟机
文章平均质量分 79
JVM原理
大e了没有闪
这个作者很懒,什么都没留下…
展开
-
垃圾收集器
1、串行回收器 使用单线程进行独占式(暂停其他工作线程)的垃圾回收,对于并行能力较弱的计算机,串行回收器的专注性和独占性往往有更好的性能表现。根据作用堆空间的不同,分为新生代串行回收器和老年代串行回收器。 新生代串行回收器使用复制算法,逻辑处理高效且没有线程切换的开销,在单CPU或并发能力较弱的场合,它的性能表现可以超过并行回收器和并发回收器。是运行在client模式下的虚拟机默认的新生代垃圾收集器。 一次新生代串行回收器的工作输出日志如下所示。...原创 2021-07-27 16:41:51 · 45 阅读 · 0 评论 -
对象的可触及性
垃圾回收的基本思想是观察每一个对象的可达性,即从根节点开始是否可以访问到这个对象,如果可以,说明当前对象正在被使用,如果从所有的根节点都无法访问到某个对象,说明对象已经不再使用。一般来说,不可达的对象需要被回收,但此对象可能在某个条件下复活自己,如果这样,对此对象的回收就是不合理的。因此需要给出一个对象可触及性状态的定义,并规定在什么状态下才可以安全地回收对象。 可触及性包含以下3种状态。 可触及的:从根节点开始,可以到达这个对象; 可复...原创 2021-07-27 13:38:40 · 124 阅读 · 0 评论 -
垃圾回收算法
1、引用计数法(Reference Counting) 实现简单,为每个对象配备一个整型的引用计数器,只要有任何对象引用了该对象,该对象引用计数器的值加1,引用失效,则计数器的值减1。只要对象的引用计数器的值为0,该对象就不再被使用。 缺点是无法处理循环引用的情况,且每次引用产生和消除时,需要执行加法和减法操作,影响系统性能。因此Java回收器没有使用引用计数法。2、标记清除法(Mark-Sweep) 标记阶段,标记所有从根节点可达的对象,清除阶...原创 2021-07-27 09:39:30 · 57 阅读 · 0 评论 -
Java虚拟机参数
1、GC参数 -XX:+PrintGC,使用这个参数启动Java虚拟机后,遇到GC就会打印日志。 日志显示,一共进行了4次GC,GC前后的堆空间使用量分别为4MB左右和377KB,当前可用堆最大内存约为16MB,最后显示的是本次GC花费的时间。-XX:+PrintGCDetails,打印更详细的GC信息,还会使虚拟机在退出前打印堆的详细信息。系统经历了3次GC,第1次是新生代GC,新生代从回收前的8MB左右降低到1MB,整个...原创 2021-07-26 19:39:29 · 486 阅读 · 0 评论 -
Java虚拟机的基本结构
Java虚拟机的基本结构如下图所示: 类加载子系统负责从文件系统或网络中加载Class信息,加载的类信息存放于方法区。除了类信息,方法区还会存放运行时常量池信息,包括字符串字面量和数字常量(Class文件中常量池部分的内存映射)。 Java堆在系统启动的时候建立,几乎所有的Java对象都存放在Java堆中,堆空间是所有线程共享的。 Java的NIO库允许Java程序使用直接内存,直接内存是在Java堆外的、直接向系统申请的内存。访问直...原创 2021-07-26 14:43:12 · 251 阅读 · 0 评论 -
数字在Java虚拟机中的表示
1、整数在Java虚拟机中的表示 Java虚拟机中,整数有byte、short、int、long四种,分别表示8位、16位、32位、64位有符号整数。整数在计算机中使用补码表示,Java虚拟机也不例外。学习补码之前,必须先理解原码和反码。 原码,就是符号位加上数字的二进制表示。以int为例,第1位表示符号位(正数或负数),其余31位表示该数的二进制值。 10的原码:00000000 00000000 00000000 00001010...原创 2021-07-26 14:01:39 · 271 阅读 · 0 评论