面试题首页 > JVM面试题

JVM调优面试题

001JVM性能调优的原则有哪些?

1)多数的Java应用不需要在服务器上进行GC优化;
2)多数导致GC问题的Java应用,都不是因为我们参数设置错误,而是代码问题;
3)在应用上线前,先考虑将JVM参数设置到最优;
4)减少对象创建的数量;
5)减少全局变量和大对象;
6)GC优化是最后不得已才使用的手段,在实际应用中,分析GC情况优化代码比优化GC参数要多得多;

002什么情况下需要JVM调优?

通过看监控中的jvm是否有fgc,频繁fgc才需要优化(频繁fgc需要抓紧改配置)

003JVM常用性能调优工具有哪些?

1)JDK的命令行工具
Sun JDK监控和故障处理命令有jps、jstat、jmap、jhat、jstack、jinfo
jps(虚拟机进程状况工具):显示指定系统内所有的HotSpot虚拟机进程。    jstat(虚拟机统计信息监视工具):用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。    jinfo(Java配置信息工具):jinfo的作用是实时地查看和调整虚拟机各项参数。
jmap(Java内存映像工具):dump堆到文件,可用于对文件的分析。    
jhat(虚拟机堆转储快照分析工具):jhat命令与jmap搭配使用,来分析jmap生成的堆 转储快照。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,可以在浏览器中查看。
jstack(Java堆栈跟踪工具):jstack命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈 的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循 环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因。线程出现停顿 的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些 什么事情,或者等待着什么资源。
2)JConsole
Jconsole(Java Monitoring and Management Console)是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。jconsole使用jvm的扩展机制获取并展示虚拟机中运行的应用程序的性能和资源消耗等信息。
概览:包括堆内存使用情况、线程、类、CPU使用情况四项信息的曲线图。
3)VisualVM
VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一,曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。
相比一些第三方工具,VisualVM有一个很大的优点:不需要被监视的程序基于特殊Agent去运行,因此它的通用性很强,对应用程序实际性能的影响也较小,使得它可以直接应用在生产环境中。
Visual GC 是常常使用的一个功能,需要通过插件按照,可以明显的看到年轻代、老年代的内存变化,以及gc频率、gc的时间等!

004出现OutOfMemoryError(OOM)原因?

触发 java.lang.OutOfMemoryError:最常见的原因就是应用程序需要的堆空间需要的是大的,但是 JVM 提供的却是小的,从而导致内存溢出。这个解决方法就是提供大的堆空间即可。
除此之外还有复杂的原因:内存泄露。特定的编程错误会导致你的应用程序不停的消耗更多的内存,每次使用有内存泄漏风险的功能就会留下一些不能被回收的对象到堆空间中,随着时间的推移,泄漏的对象会消耗所有的堆空间,最终触发java.lang.OutOfMemoryError: Java heap space 错误。

005OutOfMemoryError(OOM)的解决方案?

1.确保有足够的堆空间来正常运行你的应用程序,在 JVM 的启动配置中增加如下配置:-Xmx1024m。
2.流量/数据量峰值:应用程序在设计之初均有用户量和数据量的限制,某一时刻,当用户数量或数据量突然达到一个 峰 值 , 并 且 这 个 峰 值 已 经 超 过 了 设 计 之 初 预 期 的 阈 值 , 那 么 以 前 正 常 的 功 能 将 会 停 止 , 并 触 发java.lang.OutOfMemoryError
3.Java heap space 异常解决方案,如果你的应用程序确实内存不足,增加堆内存会解决 GC overhead limit 问题,就如下面这样,给你的应用程序 1G 的堆内存:java -Xmx1024m com.yourcompany.YourClass。

目录

返回顶部