原文链接:https://blog.csdn.net/weixin_39309402/article/details/100542214
Runtime类实例能够使应用程序与其运行的环境相连,在Java中,我们用其来获取JVM信息(JAVA程序启动了一个JVM进程),每一个JVM进程都对应一个Runtime实例,但是应用程序不能自己创建Runtime类实例,需要通过getRuntime()静态方法获取当前运行时机制(Runtime)。
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
System.out.println("JVM空闲内存=" + runtime.freeMemory() / 1024 / 1024 + "M");
System.out.println("JVM总内存=" + runtime.totalMemory() / 1024 / 1024 + "M");
System.out.println("JVM可用最大内存=" + runtime.maxMemory() / 1024 / 1024 + "M");
String str = "abc";
for (int i = 0; i < 2000; i++) {
str += "def" + i;
}
System.err.println("str--JVM空闲内存=" + runtime.freeMemory() / 1024 / 1024 + "M");
System.err.println("str--JVM总内存=" + runtime.totalMemory() / 1024 / 1024 + "M");
System.err.println("str--JVM可用最大内存=" + runtime.maxMemory() / 1024 / 1024 + "M");
runtime.gc();
System.out.println("调用gc--JVM空闲内存=" + runtime.freeMemory() / 1024 / 1024 + "M");
System.out.println("调用gc--JVM总内存=" + runtime.totalMemory() / 1024 / 1024 + "M");
System.out.println("调用gc--JVM可用最大内存=" + runtime.maxMemory() / 1024 / 1024 + "M");
}
maxMemory()
返回JVM从操作系统那里挖到的最大内存,如果内存本身没有限制,则返回值Long.MAX_VALUE,以字节为单位.
freeMemory()
返回JVM的空闲内存量,供将来分配对象使用的当前可用内存的近似总量,以字节为单位。(调用gc方法可能导致freeMemory返回值的增加).
程序运行时,内存是慢慢的从操作系统那里挖来的,基本上是用多少挖多少,但实际上JVM肯定是会稍微多挖一点的,这多出来的就是freeMemory()。
totalMemory()
返回JVM已经从操作系统那里挖过来的内存大小(进程当时所占用的所有内存),以字节为单位。(返回的值取决于主机环境)
大概知道这几种最大内存,空闲内存,总内存的概念了 码起来 某位L姓的猪给劳资一起看!!!