Runtime类freeMemory()、totalMemory()、maxMemory()详解

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已经从操作系统那里挖过来的内存大小(进程当时所占用的所有内存),以字节为单位。(返回的值取决于主机环境)
 

修改JVM内存方法:
1、eclispe-window->preferences->Java->Installed JRE,点击右侧的Edit按钮,在编辑界面中的 “Default VM Arguments ”选项中,填入如下值即可:

-Xms64m -Xmx128m

2、代码处单机右键,依次点击“Run As ”-> “Run Configurations ”,在Arguments 参数中的“VM arguments: ”中填入如下值即可:

-Xms64m -Xmx128m

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值