Runtime 类 freeMemory,totalMemory,maxMemory 介绍

【参考】Java基础(九)Runtime类freeMemory,totalMemory,maxMemory.
在这里插入图片描述

Runtime.getRuntime().maxMemory()

maxMemory()方法返回的是:
java虚拟机(这个进程)能够从操作系统那里挖到的最大的内存,以字节为单位;

可以自己配置大小:-Xmx512M ( 默认64M,即64*1024*1024字节)

Runtime.getRuntime().totalMemory()

totalMemory()方法返回的是:
java虚拟机已经从操作系统那里挖过来的内存总大小,也就是java虚拟机这个进程此时此刻的内存大小;

Runtime.getRuntime().freeMemory()

freeMemory()方法返回的是:
JVM这个进程从操作系统挖过来的内存里还没有用上内存大小;

在这里插入图片描述

如果在运行java的时候没有添加 -Xms 参数:
在java程序运行的过程中,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,但是java虚拟机100%的情况下是会稍微多挖一点的,直挖到maxMemory()为止,所以totalMemory()是慢慢增大的,此时freeMemory()的值一般情况下都是很小的。

如果在运行java的时候用了 -Xms参数:
Java程序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,然后在这些内存用的差不多的时候,再去挖;这个时候,挖过来的内存可能大部分没用上,所以这个时候freeMemory()可能会有些大。

在这里插入图片描述

在这里插入图片描述

测试代码

System.out.println("java虚拟机从操纵系统那里挖到的最大的内存   maxMemory : "+Runtime.getRuntime().maxMemory()/1024/1024+"M");
System.out.println("java虚拟机已经从操作系统那里挖过来的内存   totalMemory : "+Runtime.getRuntime().totalMemory()/1024/1024+"M");
System.out.println("java虚拟机从操纵系统挖过来还没用上的内存   freeMemory : "+Runtime.getRuntime().freeMemory()/1024/1024+"M");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
byte[] b1 = new byte[3*1024*1024];
System.out.println("java虚拟机从操纵系统那里挖到的最大的内存   maxMemory "+Runtime.getRuntime().maxMemory()/1024/1024+"M");
System.out.println("java虚拟机已经从操作系统那里挖过来的内存   totalMemory : "+Runtime.getRuntime().totalMemory()/1024/1024+"M");
System.out.println("java虚拟机从操纵系统挖过来还没用上的内存   freeMemory : "+Runtime.getRuntime().freeMemory()/1024/1024+"M");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
byte[] b2 = new byte[4*1024*1024];
System.out.println("java虚拟机从操纵系统那里挖到的最大的内存   maxMemory "+Runtime.getRuntime().maxMemory()/1024/1024+"M");
System.out.println("java虚拟机已经从操作系统那里挖过来的内存   totalMemory : "+Runtime.getRuntime().totalMemory()/1024/1024+"M");
System.out.println("java虚拟机从操纵系统挖过来还没用上的内存   freeMemory : "+Runtime.getRuntime().freeMemory()/1024/1024+"M");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

猜你喜欢

转载自blog.csdn.net/weixin_37646636/article/details/120526673