jvm是什么?

Java虚拟机

JVM是‌Java Virtual Machine(Java虚拟机)的缩写,是一种用于计算设备的规范,它是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。‌12

JVM的主要功能是运行Java字节码文件,它有三个核心功能:

  1. 解释和运行:对字节码文件中的指令实时地解释成机器码,让计算机执行。‌3
  2. 内存管理:自动为对象、方法等分配内存,以及提供自动的垃圾回收机制,回收不再使用的对象。
  3. 即时编译:对热点代码进行优化,提升执行效率,以达到甚至超越C和C++语言的运行性能。

此外,JVM还提供了跨平台的能力,即Java程序只需要编写一次,就可以在任何支持JVM的平台上运行,而不需要重新编译。这是因为JVM能够识别并运行Java编译后的字节码文件(.class文件等),这些字节码文件是平台无关的,只要安装了对应平台的JVM,就可以运行这些字节码文件

JVM调优的几种场景

CPU占用过高

CPU过高的原因一般是,死循环递归计算量大线程数过多,怎么确定CPU飙升的问题如下:

top命令查看cpu占用情况

top -Hp命令查看线程的情况

可以看到是线程id为7287这个线程一直在占用cpu,把线程号转换为16进制用jstack工具查看线程栈情况

内存溢出解决

程序发生内存泄漏后,进程的可用内存会慢慢变少,最后的结果就是抛出OOM错误。发生OOM错误后可能会想到是内存不够大,于是把-Xmx参数调大,然后重启应用。这么做的结果就是,过了一段时间后,OOM依然会出现。最后无法再调大最大堆内存了,结果就是只能每隔一段时间重启一下应用

用jstat分析gc活动情况

jstat是一个统计java进程内存使用情况和gc活动的工具,参数可以有很多,可以通过jstat -help查看所有参数以及含义

用jmap工具dump出内存快照

链接:JVM调优的几种场景(建议收藏)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值