public class Runtime extends Object
每个Java应用程序都有一个
Runtime
类的Runtime
,允许应用程序与运行应用程序的环境进行接口。当前运行时可以从getRuntime
方法获得。应用程序无法创建自己的此类的实例。
- 常用方法
maxMeory()
返回虚拟机将尝试使用的最大内存,字节为单位;
gc()
运行垃圾回收器,java虚拟机回收未使用的对象,以使其当前占用的内存可用于快速重用,当方法返回时,虚拟机已尽全力回收所有丢弃的对象。
freeMemory()
返回java虚拟机中的可用内存量。
totalMemory()
返回java虚拟机中的内存总量,此方法返回的值可能随时间而变化,具体取决于主机环境。
availableProcessors()
返回主机的处理器数量。
3.简单测试
System.out.println(Runtime.getRuntime().availableProcessors());
System.out.println("free:" +Runtime.getRuntime().freeMemory() / 1024 / 1024);
System.out.println("total:" + Runtime.getRuntime().totalMemory() / 1024 / 1024);
System.out.println("max:" + Runtime.getRuntime().maxMemory() / 1024 / 1024);
System.out.println("+=========================");
try {
Thread.sleep(3000);
} catch (Exception ee) {
ee.printStackTrace();
}
String[] aaa = new String[2000000];
System.out.println("free:" +Runtime.getRuntime().freeMemory() / 1024 / 1024);
System.out.println("total:" + Runtime.getRuntime().totalMemory() / 1024 / 1024);
System.out.println("max:" + Runtime.getRuntime().maxMemory() / 1024 / 1024);
System.out.println("+=========================");
try {
Thread.sleep(3000);
} catch (Exception ee) {
ee.printStackTrace();
}
String str = "";
for (int i = 0; i <1000 ; i++) {
str +=i;
}
System.out.println("free:" +Runtime.getRuntime().freeMemory() / 1024 / 1024);
System.out.println("total:" + Runtime.getRuntime().totalMemory() / 1024 / 1024);
System.out.println("max:" + Runtime.getRuntime().maxMemory() / 1024 / 1024);
Runtime.getRuntime().gc();
System.out.println("gc+=========================");
System.out.println("free:" +Runtime.getRuntime().freeMemory() / 1024 / 1024);
System.out.println("total:" + Runtime.getRuntime().totalMemory() / 1024 / 1024);
System.out.println("max:" + Runtime.getRuntime().maxMemory() / 1024 / 1024);
运行结果
使用idea 调整可抓取内存数量
运行结果
可以进行简单jvm调优,通过改变-Xms参数增加jvm可抓取的内存。