Java开发岗位面试题归类汇总四:JVM

时间:2022-11-20 16:48:27

1、Java的内存模型以及GC算法

答:参考:http://blog.csdn.net/ithomer/article/details/6252552

2、jvm性能调优都做了什么

3、介绍JVM中7个区域,然后把每个区域可能造成内存溢出处的情况说明

4、介绍GC 和GC Root不正常引用。

5、自己从classload 加载方式,加载机制说开去,从程序运行时数据区,讲到内存分配,讲到String常量池,讲到JVM垃圾回收机制,算法,hotspot。反正就是各种扩展

6、jvm 如何分配直接内存, new 对象如何不分配在堆而是栈上,常量池解析

7、数组多大放在 JVM 老年代(不只是设置PretenureSizeThreshold ,问通常多大,没做过一问便知

 8、老年代中数组的访问方式

 9、GC 算法,永久代对象如何 GC , GC 有环怎么处理

    答:常见的GC算法是发生在新生代的复制算法,因为一般存活的时间比较短,数量比较少,所以一般都会复制到老年区也就是永久区,它采用标记整理算法。

10、谁会被 GC ,什么时候 GC

    答:一般老年代区域会被GC,在sutvivor区域满的时候,继续有新的对象要进来,此时会在老年区域做标记和整理工作,若新生代的存活区还是不能够移动过来,则会导致内存溢出

11、如果想不被 GC 怎么办

    答:用户好像可以自己调用finalize()函数,但是JVM不保证这个函数一定会被调用。另外,规范还保证finalize函数最多运行一次。使对象变成可达就行了

12、如果想在 GC 中生存 1 次怎么办

    上面这些问题可以在第一个链接地址中找找,而且建议看下深入理解Java虚拟机,现在忙于准备面试,时间也不是很充分,大致的看了一下。对于一个优秀的程序员来说,个人觉得理解JVM的内存机制还是很有作用的,对于一些很不好理解的事情,都可以通过它来理解和分析。