首页 > 编程语言 >JAVA常用类--System类

JAVA常用类--System类

时间:2024-03-11 23:35:55浏览次数:28  
标签:JAVA -- System int gc 垃圾 println public

System类

System是一个在Java开发过程中最常见的一种系统类

  • 主要特点:可以直接执行一些系统命令
  • 例如:“System.out.println()"就是System类的一种功能

本次观察以下几个方法的使用:

方法名 类型 描述
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 普通 数组拷贝
public static long currentTieMillis() 普通 获取当前的时间戳
public static void exit(int status) 结束JVM进程,调用的是Runtime类中的exit()方法
public static void gc() 执行垃圾回收,调用的是Runtime类中的gc()方法

在使用System类时有一个十分重要的功能----统计某一个操作的耗时时间,即currentTieMillis()方法

  • 这个方法可以获取放弃的时间戳
  • 在某些操作前调用一次,执行之后调用一次,将两个结果相减即可得到程序执行的时间(耗时多少)

实例1:统计程序耗时

//System类
public class Application {
    public static void main(String[] args) {
        String massage = "ABC";
        long start = System.currentTimeMillis();//在操作开始前获取时间戳
        for (int i = 0; i < 9999; i++) {
            massage += i;//修改字符串
        }
        long end = System.currentTimeMillis();//在操作开始后获取时间戳
        System.out.println("本次程序执行时间为:" + (end - start));
    }
}

运行结果如下:(注意:单位是毫秒

本次程序执行时间为:500

以上程序的处理形式可以轻松的实现耗时的统计,该统计是直接写在程序内部,更高级的做法可以通过切面的形式来控制

实例2:观察程序的退出

在一个JVM进程运行的过程中,如果出现了某些问题,则可以通过exit()方法让JVM直接结束,而exit()并不是System类本身提供的方法,它是由Runtime类提供的!

情况一:无运行参数:

public class Application {
    //2.观察程序的退出
    public static void main(String[] args) {
        if(args.length != 2){ //通过程序接收初始化参数
            System.out.println("【错误】本程序执行时需要传递初始化运行参数,否则无法运行!");
            System.out.println("【提示】可以按照以下方法输入参数:java Application 字符串 重复次数");
            System.exit(1);//退出程序
        }
        String message = args[0];//获取一个参数内容
        int count = Integer.parseInt(args[1]);//获取循环次数
        //Integer.parseInt()将字符串参数转换为有符号的十进制参数
        for (int i = 0; i < count; i++) {
            System.out.println(message);
        }
    }
}

运行结果如下:

【错误】本程序执行时需要传递初始化运行参数,否则无法运行!
【提示】可以按照以下方法输入参数:java Application 字符串 重复次数

情况二:有运行参数:

  • 输入参数:

运行结果如下:

www.abc.cn
www.abc.cn
www.abc.cn

实例3:通过System类的gc()进行垃圾回收

通过exit()方法可以在Java程序内部来决定当前整个JVM进程是否继续,System类也可以直接进行gc()方法的调用,实现垃圾回收!

public class Application {
    //3.gc()实现垃圾回收
    public static void main(String[] args) {
        System.out.println("【1】垃圾产生之前的内存信息:FreeMemory = " + Runtime.getRuntime().freeMemory());
        String message = "ABC";//定义字符串
        for (int i = 0; i < 20; i++) {
            message += message + i + "\n";//产生大量的垃圾
        }
        System.gc();//手工进行垃圾清除
        System.out.println("【2】垃圾产生之后的内存信息:FreeMemory = " + Runtime.getRuntime().freeMemory());
    }
}

运行结果如下:

【1】垃圾产生之前的内存信息:FreeMemory = 124193032
【2】垃圾产生之后的内存信息:FreeMemory = 148016216

此时程序代码通过System类实现哪里垃圾回收,但整个程序执行完毕之后由于整个JVM内存空间是系统默认分配的,所以执行完后空闲空间有所减少!!

注意:通过Runtime类和System类调用gc()方法,实现的效果是相同的

标签:JAVA,--,System,int,gc,垃圾,println,public
From: https://www.cnblogs.com/dxrrrr/p/18067354

相关文章

  • 人生就是一场断舍离
    人生道路曲折,高峰连着低谷,低谷之后又见无边的平原,我们不断地认识新的事物,不断地告别过去。学会断舍离,学会放弃,才有机会获得更好的。专业能力让我们能做有价值的事儿,但是选择也很重要。我慢慢学会了怎么拒绝,怎么选择正确且艰难的事儿,成为那个可以下决定的人,而不是听鞭子响起的驴......
  • Mac安装MongoDB
    本文是简单的安装步骤1.下载[MongoDB]社区版本5(https://www.mongodb.com/zh-cn)2.解压,重命名为mongodb,访达中使用command+shift+G搜索进入/user/local/,文件夹放在这里3.环境变量配置终端运行:open.bash_profile(没有的话在终端上创建touch.bash_profile)打开的文件中:expo......
  • C# 关键字之internal详解
    原文链接:https://blog.csdn.net/weixin_42565127/article/details/130927438一、internal我们都知道的三种类型/成员修饰符public、protected、private,也明白它们所表示的含义,internal也是一各类型/成员修饰符(被修饰的类型或者成员称为内部类型或成员),只是它所修饰的类只能在同一......
  • Typecho Joe主题添加文章目录导航
    方法和样式参考https://www.wlplove.com/archives/84/1、安装Menutree插件wgethttps://github.com/typecho-fans/plugins/releases/download/plugins-M_to_R/MenuTree.zip解压后放到typecho插件目录2、修改主题模版编辑Joe主题文件夹public/aside.php文件<sectionclass="......
  • CVE-2023-49442 利用分析
    1.漏洞介绍JEECG(J2EECodeGeneration)是开源的代码生成平台,目前官方已停止维护。JEECG4.0及之前版本中,由于/api接口鉴权时未过滤路径遍历,攻击者可构造包含 ../的url绕过鉴权。攻击者可构造恶意请求利用 jeecgFormDemoController.do?interfaceTest接口进行jndi注入攻击实现......
  • 5-1Dataset和DataLoader
    Pytorch通常使用Dataset和DataLoader这两个工具类来构建数据管道。Dataset定义了数据集的内容,它相当于一个类似列表的数据结构,具有确定的长度,能够用索引获取数据集中的元素。而DataLoader定义了按batch加载数据集的方法,它是一个实现了__iter__方法的可迭代对象,每次迭代输出一个......
  • Java2024-Day01回顾
    publicclassInfo{   publicstaticvoidmain(String[]args){System.out.println("这里是Java2024-Day01")}}1.基本数据类型介绍整数:byte-short-int(默认)-long浮点型:float-double(默认)  后面跟F或f字符型:char:①chara ='XXXX';②char......
  • 保护模式
    一、理解保护模式  大多数现代操作系统(包括Windows9X/NT/XP和Linux等)都是多任务的,CPU的保护模式是操作系统实现多任务的基础。了解保护模式的底层原理对学习操作系统有着事半功倍的作用。  保护模式是为了实现多任务而设计的,其名称中的“保护”就是保护任务环境中各个人物......
  • BUUCTF靶机笔记
    BUUBRUTE11启动靶机后可以看到是一个登陆页面查看源代码:没有有用的信息只是单纯的html页面随便填一个用户:admin密码:123提示密码为四位怀疑是暴力破解使用burp进行单点爆破payload设定暴力完成查看length不同的数据包返回flag:flag{6982d5b6-a2f8-48d8-aec6......
  • DBever导入越南文Excel
    HelloWorld有一个Excel文件中含有越南文1、将其另存为CSV,注意选择UTF-8格式的CSV。2、原文件的编码改成UTF-83、表映射中的目标字段的类型设置成nvarchar格式。......