Home  >  Article  >  Java  >  How to check JVM memory usage: practical tips and methods shared

How to check JVM memory usage: practical tips and methods shared

WBOY
WBOYOriginal
2024-02-20 16:51:03704browse

How to check JVM memory usage: practical tips and methods shared

How to check JVM memory usage: practical tips and methods to share
JVM (Java Virtual Machine) is the running environment of Java programs. It is responsible for converting Java bytecode into machine code, and manage the program's memory usage. Understanding JVM memory usage is very important to optimize program performance and solve memory leak problems. This article will introduce you to some practical tips and methods to view JVM memory usage, and provide specific code examples.

  1. Using command line tools
    JVM provides some command line tools to view memory usage, such as jmap, jstat and jconsole.

a. jmap: used to generate a memory snapshot of the Java heap. You can view the distribution of objects in the heap through the following command:

jmap -histo <pid>

Among them, is the Java process process ID.

b. jstat: used to monitor the status and statistical information of the Java virtual machine. You can check the heap usage through the following command:

jstat -gc <pid>

where, is the process of the Java process ID.

c. jconsole: Provides a graphical user interface to monitor the running status and performance of the Java virtual machine, and can view heap memory usage.

  1. Using Java Management Extensions (JMX)
    JMX is a set of APIs provided by the Java platform for managing and monitoring applications, devices, and systems. By using JMX, you can write custom programs to view JVM memory usage. The following sample code demonstrates how to obtain heap memory usage through JMX:
import javax.management.*;
import java.lang.management.*;

public class MemoryUsageDemo {

    public static void main(String[] args) throws Exception {

        // 获取MBean服务器
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();

        // 声明ObjectName,用于获取MemoryMXBean
        ObjectName name = new ObjectName(ManagementFactory.MEMORY_MXBEAN_NAME);

        // 获取MemoryMXBean
        MemoryMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(mbs, name, MemoryMXBean.class);

        // 获取堆内存使用情况
        MemoryUsage heapMemoryUsage = mxBean.getHeapMemoryUsage();
        System.out.println("Heap Memory Usage:");
        System.out.println("Initial: " + heapMemoryUsage.getInit() / (1024 * 1024) + "MB");
        System.out.println("Used: " + heapMemoryUsage.getUsed() / (1024 * 1024) + "MB");
        System.out.println("Committed: " + heapMemoryUsage.getCommitted() / (1024 * 1024) + "MB");
        System.out.println("Max: " + heapMemoryUsage.getMax() / (1024 * 1024) + "MB");

        // 获取非堆内存使用情况
        MemoryUsage nonHeapMemoryUsage = mxBean.getNonHeapMemoryUsage();
        System.out.println("Non-Heap Memory Usage:");
        System.out.println("Initial: " + nonHeapMemoryUsage.getInit() / (1024 * 1024) + "MB");
        System.out.println("Used: " + nonHeapMemoryUsage.getUsed() / (1024 * 1024) + "MB");
        System.out.println("Committed: " + nonHeapMemoryUsage.getCommitted() / (1024 * 1024) + "MB");
        System.out.println("Max: " + nonHeapMemoryUsage.getMax() / (1024 * 1024) + "MB");
    }
}
  1. Using the garbage collector log
    The JVM's garbage collector will generate logs to record garbage collection information , including memory usage. By analyzing the garbage collector log, you can understand the memory allocation and recycling situation. The following sample code demonstrates how to configure the JVM to generate garbage collector logs:
java -Xloggc:<logFilePath> -XX:+PrintGCDetails <ClassName>

Where, <logfilepath></logfilepath> is the path of the log file, <classname></classname> is the name of the Java class that needs to be run. After running the program, a file with the garbage collector log will be generated.

Summary:
By using command line tools, JMX and garbage collector logs, we can easily view the memory usage of the JVM. This is very helpful for optimizing program performance and solving memory leak problems. I hope that through the introduction of this article, you can master how to use these tools and techniques to check the memory usage of the JVM and improve the performance of Java programs.

The above is the detailed content of How to check JVM memory usage: practical tips and methods shared. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn