java虚拟机的调优,java虚拟机调优工具

作者:高方托管网 2024-09-23 22:11:07 0

大家好,今天小编关注到一个比较有意思的话题,就是关于java虚拟机的调优的问题,于是小编就整理了1个相关介绍java虚拟机的调优的解答,让我们一起看看吧。

一般的Java项目需要JVM调优吗?注意哪些?

Java因其开源、高效、跨平台、生态好的特性使得它成为当前主流的编程开发语言,即使之前使用其它技术栈的公司现在也慢慢向Java平台迁移。相信很多Java同学在面试时都会被问到JVM调优之类的问题,但似乎感觉日常工作中又很少进行JVM调优,那对于一般的Java项目到底要不要进行JVM调优呢?

java虚拟机的调优,java虚拟机调优工具

在说JVM调优前,我们得先说说JVM。什么是JVM呢?JVM其实是Java虚拟机(Java Virtual Machine)的简称,Java之所以能跨平台,其实靠的就是JVM。

JVM它是一个虚拟机,虽然JVM本身上是一个计算机程序,但它也有自己的一整套软硬件环境。

就好比你新买来了一台电脑,装好了系统后,你能正常使用电脑了。但很多用户是需要对电脑进行一些定制化设置的,比如桌面背景等。同样,JVM在安装后,即使不进行任何额外设置也能正常工作,但在某些场景下同样需要对JVM进行一些调优,而调优的手段就是更改JVM参数。

1、JVM调优的目的

JVM调优的目的就是:尽可能使用较小的内存和CPU来让Java程序获得更高的吞吐量及较低的延迟。

2、JVM常见调优项

JVM最为常见的调优就是更改JVM默认的参数,比如:

初始堆大小:-Xms

最大堆大小:-Xmx

视频加载中...

1. 可以使⽤jmap来查看JVM中各个区域的使⽤情况

2. 可以通过jstack来查看线程的运⾏情况,⽐如哪些线程阻塞、是否出现了死锁

3. 可以通过jstat命令来查看垃圾回收的情况,特别是fullgc,如果发现fullgc⽐较频繁,那么就得进⾏调优了

4. 通过各个命令的结果,或者jvisualvm等⼯具来进⾏分析

5. ⾸先,初步猜测频繁发送fullgc的原因,如果频繁发⽣fullgc但是⼜⼀直没有出现内存溢出,那么表示fullgc实际上是回收了很多对象了,所以这些对象最好能在younggc过程中就直接回收掉,避免这些对象进⼊到⽼年代,对于这种情况,就要考虑这些存活时间不⻓的对象是不是⽐较⼤,导致年轻代放不下,直接进⼊到了⽼年代,尝试加⼤年轻代的⼤⼩,如果改完之后,fullgc减少,则证明修改有效

6. 同时,还可以找到占⽤CPU最多的线程,定位到具体的⽅法,优化这个⽅法的执⾏,看是否能避免某些对象的创建,从⽽节省内存

阿里、京东、蚂蚁等大厂面试真题解析

1. ⼀般⽣产系统中都会设置当系统发⽣了OOM时,⽣成当时的dump⽂件(-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/base)

2. 我们可以利⽤jsisualvm等⼯具来分析dump⽂件

一般的项目肯定是不需要的。其实 JVM 调优的可操作的空间很小,绝大部分时候我们也仅仅只用到几个内存设置参数,设法降低 Full GC 频率,实际上调整 JVM 带来不了多少性能提升。程序性能不佳,撑不住业务,往往问题出在程序本身,很多时候都是程序中有大列表或者创建对象频率过高,导致内存增长过快频繁Full GC,CPU因为Full GC跑满。

到此,以上就是小编对于java虚拟机的调优的问题就介绍到这了,希望介绍关于java虚拟机的调优的1点解答对大家有用。

相关推荐