首页 > 其他分享 >Runtime

Runtime

时间:2024-11-12 22:59:09浏览次数:1  
标签:Runtime void public static main getRuntime

这个类用来表示当前虚拟机的运行环境.

程序示例:

public static Runtime getRuntime() : 当前系统的运行环境对象
// 先用上面的方法, 获取到 Runtime 这个类的一个对象, 
// 再用这个对象, 调用下面的这些方法 (因为这些方法都是非静态的, 必须用对象来调用而不是类名)
public void exit(int status) : 停止虚拟机
public int availableProcessors() : 获得 CPU 的线程数
public long maxMemory() : JVM 能从系统中获取总内存大小 (单位 byte)
public long totalMemory() : JVM 已经从系统中获取总内存大小 (单位 byte)
public long freeMemory() : JVM 剩余内存大小 (单位 byte)
public Process exec(string command) : 运行 cmd 命令

这个类里面的方法不是静态的, 所以想要调用 Runtime 这个类里面的方法, 就要先获取到 Runtime 这个类的对象. 但是这个类的对象, 不能由我们自己直接 new 出来, 而是通过 getRuntime() 方法来获取.

public static Runtime getRuntime(){ }  // 当前系统的运行环境对象

System 里面的 exit() 方法在底层实际上就是调用 Runtime 里面的 exit() 方法.


图1

程序示例:

public class Demo1 {
    public static void main(String[] args) {
        // 1. 获取 Runtime 的对象
        // Runtime r1 = new Runtime();  // 'Runtime()' has private access in 'java.lang.Runtime'
        // 正确的方式:
        Runtime r1 = Runtime.getRuntime();
    }
}

进入 Runtime 源码进行查看:


图2

这样设计代码的好处是: 在外界, 不管是在哪个类中调用 getRuntime() 方法, 获取到的都是同一个对象. Java 将 Runtime 设计为只有一个对象的原因是 Runtime 这个类表示的是当前虚拟机运行的环境, 而一台电脑只能有一个运行环境, 所以如果创建多个 Runtime 类的对象, 是没有实际意义的. 所以 Java 就规定了 Runtime 只能有一个对象, 这个对象就表示虚拟机当前的运行环境. 通过这个对象, 就能获取到当前环境的一些信息.

程序示例:

public class Demo2 {
    public static void main(String[] args) {
        Runtime runtime1 = Runtime.getRuntime();
        Runtime runtime2 = Runtime.getRuntime();
        System.out.println(runtime1 == runtime2);  // true, 表示两个 Runtime 对象是同一个对象
    }
}

exit() 方法:

public class Demo3 {
    public static void main(String[] args) {
        Runtime.getRuntime().exit(0);
        System.out.println("看看这一条语句执行了吗?");  // 没有输出
    }
}

availableProcessors() 方法:

public class Demo3 {
    public static void main(String[] args) {
        System.out.println(Runtime.getRuntime().availableProcessors());  // 20
    }
}

maxMemory() 方法:

public class Demo3 {
    public static void main(String[] args) {
        System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);  // 4002, 单位是 M, 也就是 4 G
    }
}

totalMemory() 方法:

public class Demo3 {
    public static void main(String[] args) {
        System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);  // 252
    }
}

freeMemory() 方法:

public class Demo3 {
    public static void main(String[] args) {
        System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);  // 249
    }
}

exec() 方法:

不是所有的 cmd 命令都可以这样子执行. 比如 dir, 因为无法指定路径.

直接用 exec 会报错, 默认用第一个解决方案:


图3
import java.io.IOException;

public class Demo3 {
    public static void main(String[] args) throws IOException {
        Runtime.getRuntime().exec("notepad");  // 打开记事本
    }
}

cmd 里面的关机命令:
shutdown : 关机
加上参数才能执行
s : 默认在1分钟之后关机
s -t 指定时间 : 指定关机时间, 单位是秒
-a : 取消关机操
-r : 关机并重启

标签:Runtime,void,public,static,main,getRuntime
From: https://www.cnblogs.com/Chengkai730/p/18542819

相关文章

  • .NET 公共语言运行时(Common Language Runtime,CLR)
    .NET的公共语言运行时(CommonLanguageRuntime,CLR)是.NETFramework和.NETCore的核心组件,负责运行和管理.NET程序。CLR提供了一个高效、安全和稳定的执行环境,支持多种编程语言并处理各种系统级的任务。下面是对.NETCLR的详细介绍,包括其功能、架构、以及如何与.NET应......
  • miniconda Pytorch CUDA Cudnn onnxruntime
    FROMubuntu:22.04#docker启动方式#dockerrun-itd--gpusall--privileged=true--shm-size8G--nameonnx197271d29cb79/bin/bashMAINTAINERSuSu#切换阿里云源RUNapt-getupdate&&apt-getinstall-yvim&&apt-getinstall-ysudo&&......
  • 电脑中丢失 vcruntime140.dll 的五种解决方法
    vcruntime140.dll是MicrosoftVisualC++2015RedistributablePackage的一部分,它是一个动态链接库(DLL)文件,主要负责为使用了C++编译器编写的应用程序提供运行时支持。简而言之,vcruntime140.dll包含了程序运行所需的基础函数和数据结构,如内存管理、输入输出操作等。因此,对于很......
  • 为什么找不到vcruntime140_1.dll,无法继续执行代码的原因及五种有效解决方法
    vcruntime140_1.dll是微软VisualC++RedistributableforVisualStudio的一个动态链接库(DLL)文件。它是运行由VisualStudio2015及更高版本编译的C++应用程序所必需的。该DLL文件包含了支持C++标准库和Microsoft特定扩展功能的运行时函数,对于Windows应用程序......
  • win10找不到vcruntime140_1.dll,无法继续执行代码的解决方法
    vcruntime140_1.dll是微软VisualC++RedistributableforVisualStudio的一个动态链接库(DLL)文件。它是运行由VisualStudio2015及更高版本编译的C++应用程序所必需的。该DLL文件包含了支持C++标准库和Microsoft特定扩展功能的运行时函数,对于Windows应用程序......
  • 初学Java基础---Day21---正则表达式,日期类,Math类,Random类,System类,Runtime类,大数值运
    一,正则表达式理解:        符合某个语句规范的字符串案例://案例:把一个字符串中带电话号码替换成130****1111的形式Stringstr="小红13012341111小绿15112342222小黑13912343333";//分析:电话号码可以分为三组如:(130)(1234)(1111)其中第一组中的1是固定/......
  • 解决cad找不到vcruntime140_1.dll
    问题概述错误提示解析在CAD软件启动时遇到'找不到vcruntime140_1.dll'错误是一种常见的技术问题。这个错误表明系统无法定位或加载VisualC++2015运行时库中的关键文件,该文件对软件的正常运行至关重要。vcruntime140_1.dll是一个动态链接库(DLL)文件,为CAD等应用程序提供了......
  • 解决 System.Runtime.CompilerServices.Unsafe 程序集版本不匹配问题
    你是否在.NET文件上传中遇到过令人头疼的引用错误?今天我们就来深入探讨如何解决System.Runtime.CompilerServices.Unsafe引用错误1.错误现象在文件上传操作中,当处理特定文件格式(如.xlsx)时,代码workbook=newXSSFWorkbook(myfile.InputStream);出现异常。异常信息为......
  • 【解决MongoDB安装难题!】计算机丢失VCRUNTIME140D.dll?一招教你快速修复!
    在安装或运行Java的MongoDB相关程序时,如果遇到“无法启动此程序,因为计算机丢失VCRUNTIME140D.dll”的错误,通常是由于缺少MicrosoftVisualC++Redistributable包。VCRUNTIME140D.dll是VisualC++2015-2019Redistributable的一部分,用于支持C++应用程序的运行时库。以下是解......
  • 使用AMD GPU和ONNX Runtime高效生成图像与Stable Diffusion模型
    EfficientimagegenerationwithStableDiffusionmodelsandONNXRuntimeusingAMDGPUs2024年2月23日撰写,作者[道格拉斯·贾(DouglasJia)](DouglasJia—ROCmBlogs)在这篇博客中,我们将向您展示如何使用预训练的StableDiffusion模型,通过ONNXRuntime在AMDGPU上生成......