jvm信息查看

1、查看当前服务的cpu 、内存、磁盘等使用情况,看看是不是使用率比较高
2、查看java web 进程分配内存情况
3、lsof -n查看系统文件句柄数,看看某个进程打开的是不是特别多
4、jmap -heap jpid 查看当前各个内存的分配和使用情况
如果old Generation 对应的比较大,占满了导致内存溢出,可以使用
jmap -histo jpid输出各个对象数量情况,看看有没有业务相关的类对象特别多

5、jstat -gcutil jpid <time> 查看gc 、fullgc次数和时间等情况,看看full gc是不是有异常。
### 查看JVM内存使用情况的方法 查看JVM内存使用情况可以通过多种方式实现,包括直接调用Java代码中的方法、使用命令行工具以及通过远程监控工具。以下是具体的方法: #### 1. 使用Java代码获取JVM内存信息Java程序中,可以使用`Runtime`类来获取JVM的内存使用情况。以下是一个示例代码[^1]: ```java public class JVMMemoryUsage { public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); System.out.println("Max Memory: " + runtime.maxMemory() / (1024 * 1024) + " MB"); System.out.println("Total Memory: " + runtime.totalMemory() / (1024 * 1024) + " MB"); System.out.println("Free Memory: " + runtime.freeMemory() / (1024 * 1024) + " MB"); } } ``` - `runtime.maxMemory()`:返回JVM允许使用的最大内存量。 - `runtime.totalMemory()`:返回JVM当前分配的总内存量。 - `runtime.freeMemory()`:返回JVM当前未使用的内存量。 #### 2. 使用命令行工具`jmap`分析内存 `jmap`是JDK自带的一个工具,可以用来查看JVM的堆内存使用情况。通过`jmap -histo:live [pid]`命令,可以列出当前进程中所有对象的数量和占用的内存大小[^2]。 - `[pid]`:目标JVM进程的PID,可以通过`top`或`jps`命令获取。 #### 3. 使用`jconsole`进行远程监控 对于运行在远程服务器上的Spring Boot服务,可以使用`jconsole`进行监控。首先需要在启动JAR时添加以下参数[^2]: ```bash java -Djava.rmi.server.hostname=192.168.110.110 \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=1234 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -jar api-0.0.1-SNAPSHOT.jar ``` - `-Djava.rmi.server.hostname`:指定主机IP地址。 - `-Dcom.sun.management.jmxremote.port`:指定JMX远程连接端口。 - `-Dcom.sun.management.jmxremote.authenticate`:禁用身份验证。 - `-Dcom.sun.management.jmxremote.ssl`:禁用SSL加密。 启动后,可以通过`jconsole`连接到指定的IP和端口,查看内存使用情况和其他性能指标。 #### 4. 其他工具 除了上述方法外,还可以使用`jstat`、`VisualVM`等工具来监控JVM的内存使用情况。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值