Java面试题中高级进阶(JVM调优篇)
媒介本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!调优命令有哪些?常见调优工具有哪些?Minor GC与Full GC分别在什么时候发生?你知道哪些JVM性能调优参数(简朴版答复)?对象一定分配在堆中吗?有没有相识逃逸分析技术?似乎有点含糊了,那就大概看一下面试题吧。好记性不如烂键盘
*** 12万字的java面试题整理 ***
调优命令有哪些?
Sun JDK监控和故障处置惩罚命令有jps jstat jmap jhat jstack jinfo
[*]jps,JVM Process Status Tool,显示指定系统内全部的HotSpot虚拟机历程。
[*]jstat,JVM statistics Monitoring是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机历程中的类装载、内存、垃圾收集、JIT编译等运行数据。
[*]jmap,JVM Memory Map命令用于生成heap dump文件
[*]jhat,JVM Heap Analysis Tool命令是与jmap搭配使用,用来分析jmap生成的dump,jhat内置了一个微型的HTTP/HTML服务器,生成dump的分析结果后,可以在欣赏器中查察
[*]jstack,用于生成java虚拟机当前时候的线程快照。
[*]jinfo,JVM Configuration info 这个命令作用是实时查察和调整虚拟机运行参数。
常见调优工具有哪些
常用调优工具分为两类,jdk自带监控工具:jconsole和jvisualvm,第三方有:MAT(MemoryAnalyzer Tool)、GChisto。
[*]jconsole,Java Monitoring and Management Console是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控
[*]jvisualvm,jdk自带全能工具,可以分析内存快照、线程快照;监控内存变化、GC变化等。
[*]MAT,Memory Analyzer Tool,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以资助我们查找内存泄漏和镌汰内存消耗
[*]GChisto,一款专业分析gc日志的工具
Minor GC与Full GC分别在什么时候发生?
新生代内存不敷用时候发生MGC也叫YGC,JVM内存不敷的时候发生FGC
你知道哪些JVM性能调优参数?(简朴版答复)
[*]设定堆内存大小
-Xmx:堆内存最大限制。
[*]设定新生代大小。 新生代不宜太小,否则会有大量对象涌入老年代
-XX:NewSize:新生代大小
-XX:NewRatio 新生代和老生代占比
-XX:SurvivorRatio:伊甸园空间和幸存者空间的占比
[*]设定垃圾回收器 年轻代用 -XX:+UseParNewGC 年老代用-XX:+UseConcMarkSweepGC21
对象一定分配在堆中吗?有没有相识逃逸分析技术?
「对象一定分配在堆中吗?」
不一定的,JVM通过「逃逸分析」,那些逃不出方法的对象会在栈上分配。
「什么是逃逸分析?」
逃逸分析(Escape Analysis),是一种可以有效镌汰Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器可以或许分析出一个新的对象的引用的使用范围,从而决定是否要将这个对象分配到堆上。
逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相干联。当变量(或者对象)在方法中分配后,其指针有大概被返回或者被全局引用,如许就会被其他方法或者线程所引用,这种现象称作指针(或者引用)的逃逸(Escape)。通俗点讲,如果一个对象的指针被多个方法或者线程引用时,那么我们就称这个对象的指针发生了逃逸。
「逃逸分析的好处」
[*]栈上分配,可以低落垃圾收集器运行的频率。
[*]同步消除,如果发现某个对象只能从一个线程可访问,那么在这个对象上的操纵可以不需要同步。
[*]标量替换,把对象分解成一个个基本范例,并且内存分配不再是分配在堆上,而是分配在栈上。如许的好处有,一、镌汰内存使用,因为不用生成对象头。二、程序内存回收效率高,并且GC频率也会镌汰
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]