JVM 面试题

作者: 程序员财富自由之路 | 来源:发表于2019-07-30 09:28 被阅读13次

    JVM内存

    1、JVM方法区存储内容 是否会动态扩展,是否会出现内存溢出,出现的原因有哪些?
    2、JVM内存分为哪些区域?每个区域都存储哪些数据?一个对象从创建到销毁都是怎么在这些部分里存活和转移的?内存的哪些部分会参与GC的回收?
    3、JVM内存分代,Java 8的内存分代改进

    垃圾收集

    1、常见的垃圾回收算法,Hotspot虚拟机中每种收集器使用的是哪些算法,各种算法的优缺点
    2、列举jvm堆溢出和栈溢出的场景
    3、JVM垃圾回收机制,何时触发MinorGC、FullGC
    4、新生代和老生代的内存回收策略
    5、什么时候一个对象会被GC?为什么要在这种时候对象才会被GC?GC策略都有哪些分类?这些策略分别都有什么优劣势?都适用于什么场景?举个实际的场景,让你选择一个GC策略?为什么要选择这个策略?
    6、用什么方式可以查看是哪个类占用资源较多
    7、JVM 参数都有哪些?GC日志参数、设置各区域大小的参数
    8、常用垃圾收集器的优缺点,G1收集器
    9、测试环境、生产环境都是怎么配置堆栈内部各分区大小的?为什么这么配置?
    10、jvm调优有什么思路;
    11、jvm中的栈区一般分配多大,为什么
    12、Eden和Survivor的比例分配默认是多少
    13、java8中jvm做了哪两个主要的调整
    14、在tomcat中如何配置JVM各个区域的内存大小?
    15、你有没有遇到过OutOfMemory问题?你是怎么来处理这个问题的?处理 过程中有哪些收获?
    16、内存溢出和内存泄漏分别是什么?有什么区别?
    17、内存溢出有哪些种类?分别是什么原因引起的?
    18、怎样解决内存溢出问题(使用什么工具快速定位)
    19、如何查看垃圾回收日志
    20、当一个Java程序响应很慢时如何查找问题、
    21、当一个Java程序频繁FullGC时如何解决问题、
    22、当一个Java应用发生OutOfMemory时该如何解决、
    23、如何判断是否出现死锁
    24、如何判断是否存在内存泄露
    25、CPU使用率高居不下/系统无响应或响应慢,该怎么解决(使用什么工具?)

    类加载

    1、Java类加载的顺序是什么,每个步骤都做了哪些工作
    2、Java的类加载器都有哪些?每个类加载器都加载哪些类?这些类加载之间的父子关系是怎样的?双亲委派模型是什么?有什么好处?什么情况下会破坏双亲委派模型?
    3、如何⾃定义⼀个类加载器?你使⽤过哪些或者你在什么场景下需要⼀个⾃定义的类加载器吗?自己的类加载器和Java自带的类加载器关系如何处理?
    4、Classloader源码看过没?loadClass方法、findClass方法、findLoadedClass方法的作用。
    5、编译与反编译:javac 、javap 、jad 、CRF的用法
    6、JVM的编译优化、JIT即时编译器
    7、oop-klass模型、对象头
    8、Java.lang.NoSuchFieldError错误可能在什么阶段抛出

    JVM内存模型

    1、Java的内存模型是怎么设计的?为什么要这么设计?结合内存模型的设计谈谈volatile关键字的作用?
    2、Java内存可见性
    3、对Java内存模型的理解,以及其在并发中的应用
    4、指令重排序,内存栅栏等
    5、内存可见性、重排序、顺序一致性、volatile、锁、final

    想了解更多,关注微信公众号:程序员开发者社区
    www.benjming.com

    相关文章

      网友评论

        本文标题:JVM 面试题

        本文链接:https://www.haomeiwen.com/subject/pxfgrctx.html