Skip to content

JVM 核心区域与调优指南

Java 虚拟机(JVM)是 Java 跨平台运行的基石,了解其内存模型对于排查线上系统 OOM 及性能问题至关重要。

运行时数据区

  1. 堆 (Heap):所有线程共享,占用内存最大的一块。主要存放对象实例和数组。垃圾回收(GC)的主要区域。
  2. 方法区 (Method Area):所有线程共享,存放已被加载的类信息、常量、静态变量等。
  3. 虚拟机栈 (VM Stack):线程私有,描述 Java 方法执行的内存模型(栈帧)。
  4. 本地方法栈 (Native Method Stack):与虚拟机栈类似,为 Native 方法服务。
  5. 程序计数器 (Program Counter Register):线程私有,记录当前线程执行的字节码行号。

常用调优参数

  • -Xms:设置初始堆大小
  • -Xmx:设置最大堆大小(建议与 -Xms 设置一致以避免堆扩容时的停顿)
  • -Xmn:设置新生代大小
  • -XX:+UseG1GC:启用 G1 垃圾收集器(现代大内存系统推荐)

OOM 排查思路

  1. 通过加启动参数 -XX:+HeapDumpOnOutOfMemoryError,在宕机时自动生成 Dump 文件。
  2. 使用如 MAT (Memory Analyzer Tool) 分析大对象是谁创建的,找出内存泄漏的根源。

用心记录代码与生活