jvm调优面试怎么答?

一.jvm分为年轻代,年老代,持久代
1.年轻代:年轻代主要存放新创建的对象,垃圾回收会比较频繁。(稍微讲细一点就是即可,年轻代分成Eden Space和Suvivor Space。当对象在堆创建时,将进入年轻代的Eden Space。垃圾回收器进行垃圾回收时,扫描Eden Space,如果对象仍然存活,则复制到Suvivor Space。)

2.年老代:年老代主要存放JVM认为生命周期比较长的对象(在扫描Suvivor Space时,如果对象已经经过了几次的扫描仍然存活,JVM认为其为一个持久化对象,则将其移到Old Gen。)

3.持久代:持久代主要存放类定义、字节码和常量等很少会变更的信息。

二.引出gc算法
年轻代使用的是复制算法(避免频繁创建对象导致碎片过多,一般会对算法优化来规避算法占用内存的问题,优化后有效内存能近乎达到百分之90,估计也不会问那么多,点到为止)

年老代使用的标记-整理算法(因为较少的发生gc,使用标记整理算法提高内存利用率)

直观的对比:
效率:复制算法>标记-整理算法
内存整齐度:复制算法=标记-整理算法
内存利用率:标记-整理算法>复制算法

三.如何实施调优
jvm参数设置,根据机器性能为程序运行分配合理区大小

四.善后工作
使用jdk自带的jvisualvm,jconsole等工具监测程序是否发生线程阻塞,内存泄漏,以及观察gc频率是否存在异常等

猜你喜欢

转载自blog.51cto.com/13665344/2423931