JVM

1.说一下 jvm 的主要组成部分?及其作用?

类加载器(Class Loader):加载类文件到内存。Class loader只管加载,只要符合文件结构就加载,至于能否运行,它不负责,那是有Exectution Engine 负责的。

垃圾回收器:垃圾回收器可以对堆、方法区、直接内存进行回收。

执行引擎(Execution Engine):也叫解释器,负责解释命令,交由操作系统执行。

本地库接口(Native Interface):本地接口的作用是融合不同的语言为java所用

运行时数据区(Runtime Data Area):

  1. 堆。堆是java对象的存储区域,任何用new字段分配的java对象实例和数组,都被分配在堆上,
  2. 方法区:用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。
  3. 虚拟机栈:虚拟机栈中执行每个方法的时候,都会创建一个栈桢用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
  4. 本地方法栈:与虚拟机发挥的作用相似,相比于虚拟机栈为Java方法服务,本地方法栈为虚拟机使用的Native方法服务,执行每个本地方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
  5. 程序计数器。指示Java虚拟机下一条需要执行的字节码指令。

2.栈与堆

栈存储的是局部变量,而堆存储的是实体。

3.什么是双亲委派模型?

当需要加载一个类的时候,子类加载器并不会马上去加载,而是依次去请求父类加载器加载,一直往上请求到最高类加载器:启动类加载器。当启动类加载器加载不了的时候,依次往下让子类加载器进行加载。当达到最底下的时候,如果还是加载不到该类,就会出现ClassNotFound的情况。

好处:保证了程序的安全性。例子:比如我们重新写了一个String类,加载的时候并不会去加载到我们自己写的String类,因为当请求上到最高层的时候,启动类加载器发现自己能够加载String类,因此就不会加载到我们自己写的String类了。

4.类加载的过程(5步)

加载:将java源代码编译后的.class字节码文件以二进制流的方式加载进内存

连接  

       验证:验证加载进来的二进制流是否符合虚拟机的规范,不会危害的虚拟机自身的安全

       准备:给类变量(静态变量)赋予初始值,基本数据/引用类型数据

       解析:将字符串引用转换为直接引用

初始化:变量赋予初始值、执行静态语句块、执行构造函数等等。

  1. 怎么判断对象是否可以被回收

可达性分析算法。目前主流的编程语言(java,C#等)的主流实现中,都是称通过可达性分析(Reachability Analysis)来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。

5.java 中都有哪些引用类型?

强引用,永远不会被删除。除非手动置null。=new,就是强引用

软引用,一些有用但是并非必需,系统发生oom之前就会被回收。

 

弱引用。下一次垃圾回收就会被回收,不管发不发生oom。

 

虚引用。为一个对象设置虚引用关联的唯一目的就是能在这个对象实例被收集器回收时收到一个系统通知。

6.说一下 jvm 有哪些垃圾回收算法?

标志清除,把要删除的标记,直接删除,易造成碎片化。

标志复制,把内存分为两块,把要删除的标记,不被删除的复制到另一端,然后删除标记的。解决碎片化,但是浪费空间。

标志整理,改进了标记清楚算法,标记后先不删除,移动到一端,再把这一端一次清理掉。

分代收集算法。老年代(要删除的少,所以采用标记整理,),新生代(不被删除的少,复制算法,8:1:1),永久代。

 

 

 

 

已标记关键词 清除标记
<p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">为什么要学JVM</span></strong></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM是JAVA的老祖宗,一切JAVA代码都运行在JVM之上,只有深入理解和掌握虚拟机才能写出更强大的代码。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM是高级程序员的必备技能,是程序员进阶,拿高薪的必备技能。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM是各大互联网公司笔试、面试的重中之重,据统计头部的10家互利网公司,均将JVM作为笔试面试内容。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM内容庞大、并且复杂难学,通过视频学习是最佳的掌握手段。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM的字节码、垃圾回收、性能调优、故障排除、在线诊断都是高级程序员的必备技能。</span></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">课程介绍</span></strong></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">本课程总计102课时,从什么是JDK讲起,绝对的0基础入门。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">课程总计分为理论篇和实战篇两个大部分,绝对是全网最详细的JAVA虚拟机视频教程。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">课程涵盖JVM基础、字节码逐项解析、类加载器、内存结构、回收算法、垃圾收集器等理论章节。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">也包含GC日志详解、垃圾手机、性能调优、故障排除、线程死锁、内存溢出、CPU飙升、快照分析全部囊括。实战章节。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">特别包含阿里巴巴在线诊断神器Arthas教程。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">jcmd、jinfo、jstap、jmap、jconsole、jvisualvm、jstat、jmx、jprofile、jps全部工具的使用一网大金</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">课程资料</span></strong></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">课程附带配套2个项目源码</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">159页高清PDF理论篇课件一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">89页高清PDF实战篇课件一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">Unsafe源码PDF课件一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">字节码可视化解析工具</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">GC日志可视化分析工具</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">命令行工具cmder</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">class_stats字段说明PDF文件</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">jcmd Thread.print解析说明文件</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JProfiler内存分析工具说明文件</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">学习方法</span></strong></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">理论篇部分推荐每天学习2课时,可以在公交地铁上用手机进行学习。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">实战篇部分推荐对照视频,使用配套源码,一遍联系一遍学习。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">课程内容较多,不要一次性学太多,而是要循序渐进,坚持学习。</p> <p><img src="https://img-bss.csdnimg.cn/202103270814203968.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270814406060.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270814503536.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270814594202.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815088045.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815261029.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815411575.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815499881.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270816008070.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270816139898.jpg" alt="" /></p>
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页