
JVM
文章平均质量分 80
JVM学习总结
@从入门到入土
学无止境
展开
-
破坏双亲委派机制之SPI
我们知道双亲委派模型很好的解决了各个类加载器基础类型的一致性问题,而基础类型往往是被用户代码继承、调用的API存在,但这总设计有时候并不是完美的,比如基础类型又要调用用户的代码,那该怎么办?典型的例子就是SPI机制的实现,以JDBC的实现为例。JDK提供了统一的JDBC驱动接口Driver,各种数据库厂商(MySQL、Oracle等)会根据SPI规范,以jar包形式提供自己的实现。对于实现...原创 2020-01-31 03:38:01 · 842 阅读 · 0 评论 -
Java四种引用类型
JVM在进行GC回收时,会从GC Roots开始遍历,判断引用是否可达,引用的可达性是判断GC回收的基本条件。但是在某些场景下,即使引用可达,也希望能够根据语义的强弱进行有选择的回收。引用根据语义强弱可分为强引用、软引用、弱引用、虚引用。强引用(永久有效)Strong Reference,最为常见的引用类型,如:Object obj = new Object();只有对象...原创 2020-01-30 16:54:20 · 529 阅读 · 0 评论 -
面试题:能否自定义一个java.lang.Object类
创建自定义的java.lang.Object首先尝试在工程中创建自己的java.lang.Object类:package java.lang;/** * 自己创建的java.lang.Object * * @author hujy * @version 1.0 * @date 2020-01-30 01:12 */public class Object { st...原创 2020-01-30 13:24:46 · 2103 阅读 · 0 评论 -
JVM常用参数
-X参数参数 含义 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 -XX参数boolean类型格式:-XX:[+-]<name>+ 或 - 表示启用或者禁用name属性例如:-XX:+UseConcMarkSweepGC表示启用CMS类型的垃圾回收器...原创 2019-12-22 19:51:07 · 2196 阅读 · 0 评论 -
一个对象的一生
我是一个普通的 Java 对象,我出生在 Eden 区,在 Eden 区我还看到和我长的很像的小兄弟,我们在 Eden 区中玩了挺长时间。有一天,Eden 区中的人实在是太多了,我就被迫去了 Survivor 区的 “From” 区。自从去了 Survivor 区,我就开始飘了,有时候在 Survivor 的 “From ” 区,有时候在Survivor的 “To” 区,居无定所。直到我1...原创 2019-12-22 17:35:39 · 2259 阅读 · 0 评论 -
JDK命令行工具
目录jpsjstatjinfojmapjhatjstackjps定义:JVM Process Status Tool:显示指定系统内所有的HotSpot虚拟机进程。参数:-q:只输出进程ID,不输出类的短名称 。-m:输出传递给Java进程的函数 。-l:输出主函数的完整路径 。-v:显示传递给JVM的参数。用例:jps -v...原创 2019-01-15 22:21:17 · 1491 阅读 · 0 评论 -
JVM 垃圾回收简介
目录垃圾回收可达性分析算法GC RootsStop The World安全点安全区域能够找到 Reference Chain 的对象,就一定会存活么?垃圾回收算法标记-清除算法复制算法标记-整理算法分代收集算法垃圾收集器SerialParNewSerial OldParallel OldCMSG1ZGC垃圾...原创 2019-01-14 22:45:31 · 1902 阅读 · 0 评论 -
JVM内存布局
目录内存布局Heap(堆)Metaspace(元空间)JVM Stack(虚拟机栈)Native Method Stack(本地方法栈)Program Counter Register(程序计数寄存器)内存布局JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM高效稳定的运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。...原创 2019-01-08 00:24:12 · 4946 阅读 · 0 评论 -
类加载原理
目录什么是类加载双亲委派模型三层类加载器工作过程双亲委派模型的优点自定义类加载器应用场景类加载时机类加载过程常见类加载异常编译器、解释器、JIT即时编译器什么是类加载类加载指的是将类Class文件读入内存,并为之创建一个java.lang.Class对象,class文件被载入到了内存之后,才能被其它class所引用。 JVM启动的时候,并不会一次性...原创 2018-12-31 22:27:34 · 4757 阅读 · 0 评论 -
字节码简介
什么是字节码?Java的使命就是一次编写,到处执行。在不同的操作系统,不同硬件平台上,均可以不用修改代码即可顺畅地执行。Java是如何实现跨平台的?答案是增加一个中间层,即字节码(Bytecode)。Java所有的指令有200个左右,一个字节(8位)可以存储256种不同的指令信息,一个这样的字节称为字节码。在代码的执行过程中,JVM将字节码解释执行,屏蔽对底层操作系统的依赖。JVM也可...原创 2018-12-31 16:02:34 · 3942 阅读 · 0 评论