Java Runtime类的基本使用

官网API:

https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html

	@Test
	public void test2() throws Exception {
		// 1.getRuntime: 获取Runtime实例
		Runtime rt = Runtime.getRuntime();

		/*
		 * 2.addShutdownHook:
		 * 当程序出现宕机,System.exit(),正常退出等场景时一些状态没有被正确保存,使用此方法JVM会在关闭时来完成正确保存,注:
		 * 在使用kill pid 时程序不会被执行
		 */
		Thread thread = new Thread(new Runnable() {
			public void run() {
				System.out.println("线程A");
			};
		});
		rt.addShutdownHook(thread);

		// 3.availableProcessors: 返回Java虚拟机可用的处理器数
		int availableProcessors = rt.availableProcessors();
		System.out.println("Java虚拟机可用的处理器数:" + availableProcessors);

		// 4.exec: 执行windows应用程序
		Process exec = rt.exec("javac");

		// 4.1 Process()
		// waitFor = exec.waitFor();// 程序等待或指定时间,返回子进程的退出值
		// exec.getErrorStream();// 返回连接到子进程的错误输出的输入流。
		// exec.getInputStream();// 返回连接到子进程正常输出的输入流。
		// exec.getOutputStream();// 返回连接到子进程的正常输入的输出流。
		// exec.isAlive();// 测试由此表示的子进程是否Process存活。
		// exec.exitValue();// 返回子进程的退出值
		// exec.waitFor();// 如果需要,使当前线程等待,直到此Process对象表示的进程终止,或指定时间结束进程。

		long freeMemory = rt.freeMemory();// 返回虚拟机中可用的内存量,已经占用的内存剩余量
		System.out.println("内存剩余量:" + freeMemory);
		rt.gc();// 运行垃圾收集器,通知垃圾收集器手机不再使用的程序

		// rt.halt(0);//强制终止当前运行的Java虚拟机。
		// rt.exit(0);// 通过启动其关闭序列来终止当前运行的Java虚拟机,state = 0和1是正常和强制退出

		long maxMemory = rt.maxMemory();// 返回Java虚拟机将尝试使用的最大内存量。
		System.out.println("虚拟机最大使用内存量:" + maxMemory);
		rt.removeShutdownHook(thread);// 取消注册先前注册的虚拟机关闭挂钩。
		rt.totalMemory();// 返回Java虚拟机中的内存总量。
		rt.traceInstructions(false);// 启用/禁用跟踪指令。
		rt.traceMethodCalls(false);// 启用/禁用方法调用的跟踪。
		rt.runFinalization();// 运行待完成的任何对象的终结方法

	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值