首页 > 其他分享 >4_JVM

4_JVM

时间:2023-03-06 23:01:39浏览次数:31  
标签:委派 初始化 字节 引用 JVM 加载

JVM面试题汇总

1.强引用、软引用、弱引用、虚引用是什么,有什么区别?

  • 强引用:普通的对象引用关系,如 Cat cat = new Cat();

  • 软引用:用于维护一些可有可无的对象,只有在内存不足时,系统则会回收软引用对象

  • 弱引用:相比软引用来说,要更加无用一些,它拥有更短的生命周期,当 JVM 进行垃圾回收时,无

    论内存是否充足,都会回收被弱引用关联的对象

  • 虚引用:是一种形同虚设的引用,它主要用来跟踪对象被垃圾回收的活动。

2.什么是类加载?类加载的过程?

  • 类加载:虚拟机把描述类的数据(字节码文件)加载到内存里面,并对数据进行校验、准备、解析和初始化,最终变成可以被虚拟机直接使用的class对象;

  • 类的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析

    (Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。

    • 加载:将字节码从不同的数据源(可能是class文件,也可能是jar包,甚至网络)转化为二进制字节流加载到内存中,并在堆中生成一个代表该类的Class对象
    • 连接--验证:验证该class文件中的字节流信息复合虚拟机的要求,不会威胁到jvm的安全;
    • 连接--准备:JVM会在该阶段对静态变量,分配内存并默认初始化(0,null,false等)
    • 连接--解析:该阶段主要完成符号引用转化成直接引用;
    • 初始化:到了初始化阶段,才开始执行类中定义的java代码;初始化阶段是调用类构造器的过程;

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

  • 当一个类加载器收到一个类加载的请求,他首先不会尝试自己去加载,而是将这个请求委派给父类加载

    器去加载,只有父类加载器在自己的搜索范围类查找不到给类时,子加载器才会尝试自己去加载该类;

  • 为了防止内存中出现多个相同的字节码;因为如果没有双亲委派的话,用户就可以自己定义一个

    java.lang.String类,那么就无法保证类的唯一性。

4.列举一些你知道的打破双亲委派机制的例子,为什么要打破?

  • Tomcat,应用的类加载器优先自行加载应用目录下的 class,并不是先委派给父加载器,加载不了

    才委派给父加载器。

标签:委派,初始化,字节,引用,JVM,加载
From: https://www.cnblogs.com/cxk6/p/17185846.html

相关文章

  • JVM内存回收机制
    JVM内存回收机制JVM内存回收机制标签:JVMGC垃圾回收内存管理  0.说明当JVM创建对象遇到内存不足的时候,JVM会自动触发垃圾回收garbagecollecting(简称GC)操作,......
  • JVM 类加载器、双亲委派原理
    类加载器ClassLoader作用:负责装入类。一个java程序运行,至少需要三个类加载器实例,负责加载不同类。BootstrapClassLoader是JVM内核内嵌加载器,主要负载加载JAVA_HOME/lib......
  • 性能测试-JVM分析
    1、输出gc日志,jvm的启动参数中加入看jvm的gc信息:-XX:+PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimestamps-XX:+PrintGCApplicationStopedTime启动后输出:GC概要信......
  • JVM系统优化实践(7):垃圾回收器与垃圾回收算法
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~上回说到了年轻代、老年代与数据计算的一个案例。接下来就先讲一讲年轻代和老年代的两个垃圾回收器:ParNew和CMS。和Serial......
  • java文件生成字节码到加载到jvm的运行流程分析
    Java程序是怎么运行的?一 java代码到.class文件概括来说,写好的Java源代码文件经过Java编译器编译成字节码文件后,通过类加载器加载到内存中,才能被实例化,然后到Java......
  • Java/.Net双平台核心,Jvm和CLR运行异同点
    前言:本篇以.Net7.0.2CLR和OpenJDk19参照,解析下它们各自调用函数的异同。以下为个人理解。概述JDK大约5.9G,CLR大约7.6G,两者相差1.7G左右。root@tang-virtual-mac......
  • JVM系统优化实践(6):年轻代、老年代与数据计算
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~上回说道如果当前Survivor区中年龄相同的一批对象总大小≥Survivor总数×50%,那么这批对象及比它们年龄更大的对象,就都......
  • 记录一个cpu彪高的BUG处理--jvm调优
    业务场景:游戏行业,N个服务器,要进行大批量的合服处理,玩家数据会上升,从新整理和服务器的分配情况和逻辑处理,正常开发后,当天白天正常,然后晚上高峰期开始玩家频繁反馈无法登录~~......
  • JVM系统优化实践(5):什么时候GC以及有哪些GC
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~既然程序运行会产生大量的废弃物,也就是「垃圾」,那总不能一直堆着不管吧。现在就来粗浅地谈谈Java里面什么时候会触发GC以......
  • 【JVM】轻易别写 System.gc()
    System.gc()触发的是FGC,调用System.gc()之后,JVM不会马上执行回收,但通过System.gc()或Runtime.getRuntime()的调用,会显式触发FullGC,同时对老年代和新生代进行回收,尝试......