如何查看当前堆的大小
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

