JVM系列
文章平均质量分 74
Java___interview
这个作者很懒,什么都没留下…
展开
-
『面试必问JVM系列』虚拟机类加载机制
虚拟机类加载机制 相关视频教程参考(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、装换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型。 在 Java 语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的。 1、类加载时机 类的生命周期( 7 个阶段) 其中加载原创 2021-12-10 11:00:43 · 137 阅读 · 0 评论 -
『面试必问JVM系列』基于JVM的线程实现
Java线程 相关视频教程参考(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 1、线程的实现 使用内核线程实现,直接由操作系统内核支持的线程,这种线程由内核完成切换。程序一般不会直接去使用内核线程,而是去使用内核线程的一种高级接口 —— 轻量级进程(LWP),轻量级进程就是我们通常意义上所讲的线程,每个轻量级进程都有一个内核级线程支持。 使用用户线程实现原创 2021-12-08 14:46:28 · 129 阅读 · 0 评论 -
『面试必问JVM系列』四个方面深入理解Java内存模型
Java内存模型 相关视频教程参考(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 屏蔽掉各种硬件和操作系统的内存访问差异。 1、主内存和工作内存之间的交互 2.、对于 volatile 型变量的特殊规则 关键字 volatile 是 Java 虚拟机提供的最轻量级的同步机制。 一个变量被定义为 volatile 的特性: 保证此变量对所有.原创 2021-12-07 16:08:15 · 99 阅读 · 0 评论 -
『面试必问JVM系列』内存分配与回收策略
内存分配与回收策略 相关视频教程参考(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 1、对象优先在 Eden 分配 对象主要分配在新生代的 Eden 区上,如果启动了本地线程分配缓冲区,将线程优先在 (TLAB) 上分配。少数情况会直接分配在老年代中。 一般来说 Java 堆的内存模型如下图所示: 新生代 GC (Minor GC) 发生在新生代的垃圾回原创 2021-12-02 14:32:20 · 203 阅读 · 0 评论 -
『面试必问JVM系列』常见的垃圾回收器详解
垃圾回收器 相关视频教程(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 收集算法是内存回收的理论,而垃圾回收器是内存回收的实践。 说明:如果两个收集器之间存在连线说明他们之间可以搭配使用。 1. Serial收集器 这是一个单线程收集器。意味着它只会使用一个 CPU 或一条收集线程去完成收集工作,并且在进行垃圾回收时必须暂停其它所有的工作线程直到收集结束。原创 2021-12-01 11:26:34 · 500 阅读 · 0 评论 -
『面试必问JVM系列』JVM的四种垃圾回收算法详解
垃圾回收算法 相关视频教程(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 1. 标记 —— 清除算法 直接标记清除就可。 两个不足: 效率不高 空间会产生大量碎片 2. 复制算法 把空间分成两块,每次只对其中一块进行 GC。当这块内存使用完时,就将还存活的对象复制到另一块上面。 解决前一种方法的不足,但是会造成空间利用率低下。因为...原创 2021-11-30 10:58:28 · 90 阅读 · 0 评论 -
『面试必问JVM系列』垃圾回收器与内存分配策略
垃圾回收器与内存分配策略 相关视频教程(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 1. 概述 程序计数器、虚拟机栈、本地方法栈 3 个区域随线程生灭(因为是线程私有),栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。而 Java 堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有原创 2021-11-29 15:40:28 · 278 阅读 · 0 评论 -
『面试必问JVM系列』HotSpot 虚拟机对象探秘
HotSpot 虚拟机对象探秘(二) 相关视频教程(来自动力节点):https://www.bilibili.com/video/BV1e64y197rh 相关资料下载:http://www.bjpowernode.com/?csdn 主要介绍数据是如何创建、如何布局以及如何访问的。 1、对象的创建 创建过程比较复杂,建议看书了解,这里提供个人的总结。 遇到 new 指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。原创 2021-11-26 11:15:07 · 318 阅读 · 0 评论 -
『面试必问JVM系列』JVM 运行时数据区的划分,你都了解吗?
JVM运行内存溢出(一) 相关视频参考https://www.bilibili.com/video/BV1e64y197rh 1. 运行时数据区域 根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。 1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成 如果线程正在执行一个 Java 方法,这个计数器记原创 2021-11-25 10:46:46 · 115 阅读 · 0 评论