如何查看当前堆的大小
package com.oyb.jvm.test03.lesson04;
import com.sun.management.OperatingSystemMXBean;
import java.lang.management.ManagementFactory;
public class TestB01 {
public static void main(String[] args) {
int byteToMb = 1024 * 1024;
long totalMemory=Runtime.getRuntime().totalMemory()/byteToMb;
long maxMemory=Runtime.getRuntime().maxMemory()/byteToMb;
System.out.println("当前初始内存大小 -Xms :"+totalMemory+"M");
System.out.println("当前最大内存大小 -Xmx :"+maxMemory+"M");
// 操作系统级内存情况查询
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long physicalFree = osmxb.getFreePhysicalMemorySize() / byteToMb;
long physicalTotal = osmxb.getTotalPhysicalMemorySize() / byteToMb;
long physicalUse = physicalTotal - physicalFree;
System.out.println("操作系统物理内存已用的空间为:" + physicalFree + " MB");
System.out.println("操作系统物理内存的空闲空间为:" + physicalUse + " MB");
System.out.println("操作系统总物理内存:" + physicalTotal + " MB");
System.out.println("默认堆 初始内存大小:物理电脑内存大小 / 64= "+physicalTotal/64+"M");
System.out.println("默认堆 最大内存大小:物理电脑内存大小 / 4= "+physicalTotal/4+"M");
try {
Thread.sleep(100000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
通过参数自定义堆内存大小
堆的大小在jvm启动时就已经设定好了,可以通过”-Xmx”和”-Xms”来进行设置
-X 是jvm的运行参数
“-Xms”用于表示堆区的起始内存,ms是memory start
“-Xmx”用于表示堆区的最大内存,
手动设置:-Xms512m -Xmx512m