![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
文章平均质量分 93
jvm
星光之子0317
这个作者很懒,什么都没留下…
展开
-
JVM面试(十一)-JVM命令/工具
jps命令格式:jps执行样例:jps -ljps还可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具它可以显示本地或者远程[虚拟机进程中的 类加载、内存、垃圾收集、即时编译 等运行时数据,在没有GUI图形界面、只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的常用工具jstat是 线上 定位 jvm 性能 的原创 2021-09-08 23:39:11 · 181 阅读 · 0 评论 -
JVM面试(九)-强引用、软引用、弱引用、虚引用及应用场景
Java中最常见的就是强引用把 一个对象 赋给 一个引用变量 时,这个引用变量 就是一个强引用有强引用的对象 一定为 可达性状态,所以不会被垃圾回收机制回收强引用是造成Java内存泄漏的主要原因如果想中断 强引用 和 某个对象 之间的关联关系,可以 显示地 将引用 赋值为 null,JVM就会在合适的时间回收该对象,例如 集合类中的clear方法,这里会牵扯到内存泄漏和内存溢出的区别软引用通过SoftReference类实现如果 一个对象 只有 软引用,则 在系统内存空间不足时 该对象 将被回收在原创 2021-12-22 15:14:37 · 777 阅读 · 0 评论 -
JVM面试(八)-类加载机制、类加载器、双亲委派
虚拟机 把 描述类的数据 从Class文件 加载到内存,并对数据进行 校验、转换解析、初始化,最终形成 可以被虚拟机直接使用的Java类型,这就是虚拟机的 类加载机制类型的加载、连接、初始化3个过程 都是在 程序运行期间完成的JVM的类加载分为 5个阶段:加载、连接(验证、准备、解析)、卸载、使用、初始化接口在初始化时,并不要求其父接口全部都完成了初始化,只有在真正用到父接口的时候(例如引用父接口定义的常量)才会初始化指的是JVM读取Class文件,并且根据Class文件描述 创建 java.lang.原创 2021-06-07 09:31:07 · 281 阅读 · 0 评论 -
JVM面试(六)-G1垃圾收集器
分代垃圾收集 可以将关注点 集中在 最近被分配的对象上,而无需整堆扫描,避免长生命周期对象的拷贝,同时独立收集有助于降低响应时间虽然分区使得内存分配不再要求紧凑的内存空间,但G1依然使用了分代的思想与其他垃圾收集器类似,G1 将内存 在逻辑上 划分为 年轻代和老年代,其中年轻代又划分为Eden空间和Survivor空间但年轻代空间并不是固定不变的,当现有年轻代分区占满时,JVM会分配新的空闲分区加入到年轻代空间整个年轻代内存会在初始空间(默认整堆5%)与最大空间(默认60%)之间动态变化,且由参数 目标原创 2022-06-06 18:56:32 · 750 阅读 · 0 评论 -
JVM面试(五)-三色标记法、增量更新(Incremental Update)、原始快照-SATB
三色标记算法背后的首要原则就是把堆中的对象根据它们的颜色分到不同集合里面,这三种颜色和所包含的意思分别如下所示:GC开始前所有对象都是白色GC一开始 所有 根能够直达的对象 被压到栈中,待搜索,此时颜色是灰色然后 灰色对象 依次从栈中取出 搜索(其)子对象,子对象也会被涂为灰色,入栈当 其所有的子对象 都涂为灰色之后 该对象 被涂为黑色当GC结束之后 灰色对象 将全部没了,剩下黑色的为存活对象,白色的为垃圾虚线箭头是被切断的引用灰色箭头是重新被添加的引用上面的第五、六个图会产生漏标可达性分析的原创 2022-06-07 11:23:26 · 846 阅读 · 1 评论 -
JVM面试(四)-垃圾回收、垃圾收集器、GC日志
没有任何指针指向的对象 就是垃圾垃圾回收(Garbage Collection,GC),顾名思义就是 释放 垃圾占用的空间,防止内存泄露有效的 使用(动词) 可使用的内存,对 内存堆中 已经死亡的 或者 长时间没有使用的对象 进行 清除和回收通过 在 对象头中 分配一个空间 来保存 该对象被引用的次数(Reference Count)。如果该对象被其它对象引用,则它的引用计数加1,如果删除对该对象的引用,那么它的引用计数就减1,当该对象的引用计数为0时,那么该对象就会被回收优点:缺点:此时由于他们相互引用原创 2021-06-06 23:09:52 · 462 阅读 · 0 评论 -
JVM面试(三)-对象的创建、为对象分配内存、对象的内存布局、对象访问定位
如果Java堆的内存是规整,即所有用过的内存放在一边,而空闲的的放在另一边分配内存时 将 位于中间的指针指示器 向空闲的内存移动一段 与 对象大小相等的距离,这样便完成分配内存工作如果Java堆的内存不是规整的,则需要 由虚拟机 维护一个列表 来记录 那些内存是可用的,这样在分配的时候 可以从列表中 查询到 足够大的内存分配给对象,并在分配后更新列表记录选择哪种分配方式是由 Java 堆是否规整来决定的,而 Java 堆是否规整 又由 所采用的 垃圾收集器 是否 带有压缩整理功能决定对象的创建在虚拟机中是原创 2021-09-08 23:00:12 · 250 阅读 · 0 评论 -
JVM面试(二)-对象在堆内存中分配策略
多数情况,对象都在新生代 Eden 区分配当 Eden 区分配没有足够的空间进行分配时,虚拟机将会发起一次 Minor GC如果本次 GC 后还是没有足够的空间,则将启用 分配担保机制 在 老年代中分配内存Minor GC 是指发生在新生代的 GC,因为 Java 对象大多都是朝生夕死,所有 Minor GC 非常频繁,一般回收速度也非常快Major GC/Full GC 是指发生在老年代的 GC,出现了 Major GC 通常会伴随至少一次 Minor GCMajor GC 的速度通常会比 Min原创 2021-09-08 23:12:52 · 246 阅读 · 0 评论 -
JVM面试(一)-运行时数据区(内存)、堆、方法区、直接(堆外)内存
JVM主要组成部分 JVM运行机制 运行时数据区 程序计数器 虚拟机栈 本地变量表 操作数栈 动态链接 返回地址 本地方法栈 堆 新生代 老年代 对象分配策略 TLAB 逃逸分析 方法区 永久代 元空间 常量池 运行时常量池 字符串常量池 堆外内存.........原创 2021-06-04 01:10:44 · 705 阅读 · 0 评论