Runtime 类 freeMemory,totalMemory,maxMemory 介绍

Runtime.getRuntime().maxMemory()

JVM(这个进程)能够从操作系统那里挖到的最大的内存,以字节为单位。可自己配置大小:-Xmx512M ( 默认64M)

Runtime.getRuntime().totalMemory()

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

Runtime.getRuntime().freeMemory()

JVM这个进程从操作系统挖过来的内存里还没用上内存大小;


[Q&A] -Xms对内存变化的影响

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

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


测试代码

public class RuntimePrac {
    public static void main(String[] args) {
        printRuntime();

        byte[] b1 = new byte[3 * 1024 * 1024];
        printRuntime();

        byte[] b2 = new byte[4 * 1024 * 1024];
        printRuntime();

    }

    private static void printRuntime() {
        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("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    }
}

在这里插入图片描述


参考

【参考】Java基础(九)Runtime类freeMemory,totalMemory,maxMemory.

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值