JVM
梦世
这个作者很懒,什么都没留下…
展开
-
详解CMS
CMS 的全称是 Mostly Concurrent Mark and Sweep Garbage Collector(主要并发标记清除垃圾收集器),它在年轻代使用复制算法,而对老年代使用标记-清除算法。CMS 的设计目标,是避免在老年代 GC 时出现长时间的卡顿。如果你不希望有长时间的停顿,同时你的 CPU 资源也比较丰富,使用 CMS 是比较合适的。CMS 使用的是 Sweep 而不是 Compact,所以它的主要问题是碎片化。随着 JVM 的长时间运行,碎片化会越来越严重,只有通过...原创 2020-07-02 11:49:40 · 1742 阅读 · 1 评论 -
垃圾回收的步骤?垃圾回收算法有哪些?各自的优劣?HotSpot 垃圾回收器
JVM 中有哪些垃圾回收算法?它们各自有什么优劣?CMS 垃圾回收器是怎么工作的?有哪些阶段?服务卡顿的元凶到底是谁?按照语义上的意思,垃圾回收,首先就需要找到这些垃圾,然后回收掉。但是 GC 过程正好相反,它是先找到活跃的对象,然后把其他不活跃的对象判定为垃圾,然后删除。所以垃圾回收只与活跃的对象有关,和堆的大小无关。垃圾回收的步骤标记(Mark)使用可达性分析找到活跃对象,并标记。如图:清除(Sweep)将未被标记的对象回收掉。如图:图中的清...原创 2020-06-30 20:50:57 · 691 阅读 · 0 评论 -
GC怎么判断对象可以被回收?GC Roots有那些? 什么是强引用、软引用、弱引用、虚引用?OOM引起的原因?
目录GC怎么判断对象可以被回收?GC Roots有那些?什么是强引用、软引用、弱引用、虚引用?OOM引起的原因?GC怎么判断对象可以被回收?GC Roots可达性分析法:从GC Roots向下搜索、追溯,当一个对象不再和任何的一个GC Root产生关系,就会被判定为垃圾。如图中的 Obj5、6、7,被判定为垃圾。GC Roots有那些?大体上可以分为三类: 活动线程相关的各种引用,例如:栈帧相关的各种引用 类的静态变量的引用 JNI的引用原创 2020-06-29 14:12:10 · 692 阅读 · 0 评论 -
命令行查看字节码文件、字节码运行流程案例分析
命令行查看字节码文件class B{ private int a = 1234; static long c = 1111; public long test(long num) { long ret = this.a + num + c ; return ret ; }}public class A { private B b = new B() ; public static void main(String[] args) { A a = new A(); lon原创 2020-06-29 12:17:45 · 765 阅读 · 0 评论 -
类加载过程? Java怎么保证核心API不被篡改? 打破双亲委派机制的案例
我们首先看几个面试题。我们能够通过一定的手段,覆盖 HashMap 类的实现么? 有哪些地方打破了 Java 的类加载机制? 如何加载一个远程的 .class 文件?怎样加密 .class 文件? <cinit> 方法和 <init> 方法有什么区别?类加载过程JVM 通过加载 .class 文件,能够将其中的字节码解析成操作系统机器码。那这些文件是怎么加载进来的呢?又有哪些约定?加载过程如图:注:几种变量的关系:1、加载将外部的 .class 文原创 2020-06-28 17:29:41 · 990 阅读 · 0 评论 -
JVM 是如何进行内存区域划分的? JVM 如何高效进行内存管理?为什么有 Metaspace 区域?它有什么问题?
目录JVM的内存区域是怎么高效划分的?虚拟机栈程序计数器堆为什么有 Metaspace 区域?它有什么问题?总结Java 引以为豪的就是它的自动内存管理机制。为了管理这些快速的内存申请释放操作,就必须引入一个池子来延迟这些内存区域的回收操作。我们常说的内存回收,就是针对这个池子的操作。我们把上面说的这个池子,叫作堆,可以暂时把它看成一个整体。JVM的内存区域是怎么高效划分的?程序想要运行,就需要数据。有了数据,就需要在内存上存储。Java 程序的数据结构是非常丰富的。其中原创 2020-06-27 12:18:40 · 564 阅读 · 0 评论 -
Java 代码到底是如何运行起来的? JVM 和操作系统的关系? JVM、JRE、JDK 的关系? Java 虚拟机规范和 Java 语言规范的关系?
目录Java 代码到底是如何运行起来的?JVM 和操作系统的关系?JVM、JRE、JDK 的关系?Java 虚拟机规范和 Java 语言规范的关系?总结为什么 Java 研发系统需要 JVM?对你 JVM 的运行原理了解多少?我们写的 Java 代码到底是如何运行起来的?Java 代码到底是如何运行起来的?如图:下面以一个例子解释:范例:helloworldpublicclassHelloWorld{publicstaticvoi...原创 2020-06-27 11:43:29 · 764 阅读 · 0 评论