用友软件
面试过程:
1、描述某个场景中JVM的内存分布,以及内存的分布情况。
2、GC过程中的运行过程,理解过程?
3、什么是jvm?[jvm就是Java虚拟机(jdk)]
4、jvm是如何加载class以及处理的过程
(1)加载.class文件
(2)管理并分配内存
(3)执行垃圾收集
5、内存是什么?怎么样分配内存?
答:对象放置堆中,局部变量以及一些数组值的区域 VM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double)、部分的返回结果以及Stack Frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址。
6、GC的基本原理?什么时候需要GC?为什么需要GC?
答:GC (Garbage Collection)的基本原理:将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、旧生代的方式来对对象进行收集,以尽可能的缩短GC对应用造成的暂停
(1)对新生代的对象的收集称为minor GC;
(2)对旧生代的对象的收集称为Full GC;
(3)程序中主动调用System.gc()强制执行的GC为Full GC。
不同的对象引用类型, GC会采用不同的方法进行回收,JVM对象的引用分为了四种类型:
(1)强引用:默认情况下,对象采用的均为强引用(这个对象的实例没有其他对象引用,GC时才会被回收)
(2)软引用:软引用是Java中提供的一种比较适合于缓存场景的应用(只有在内存不够用的情况下才会被GC)
(3)弱引用:在GC时一定会被GC回收
(4)虚引用:由于虚引用只是用来得知对象是否被GC
全部评论
(3) 回帖