这几天,看了Java中引用包(java.lang.ref )的一些知识,在进行一些测试代码编写的时候,
涉及到了System类的gc()方法和runFinalization().
1. gc()方法如下:
public static void gc()
运行垃圾回收器。
调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。
当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。
调用 System.gc() 实际上等效于调用: Runtime.getRuntime().gc()
2. runFinalization()方法如下:
public static void runFinalization()
Runs the finalization methods of any objects pending finalization.
执行所有需要执行 finalization 方法的对象 的 finalization 方法.
Calling this method suggests that the Java Virtual Machine expend effort toward running the
finalize methods of objects that have been found to be discarded
but whose finalize methods have not yet been run.
When control returns from the method call, the Java Virtual Machine has made a best effort to complete all outstanding finalizations.
调用这个方法,是想让java 虚拟机 努力朝着执行 对象finalize方法的目标努力,这些对象已丢弃,但尚未执行过finalize方法.
当调用这个方法返回时,java 已经尽了最大努力来调用已被丢弃对象的finalize方法了.
调用 System.runFinalization() 实际上等效于调用: Runtime.getRuntime().runFinalization()
还有一些其他方法:
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。
由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
1、成员变量
System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
例如:
System.out.println(“Test”);
该行代码的作用是将字符串”Test”输出到系统的标准输出设备上,也就是显示在屏幕上。
后续在学习完IO相关的知识以后,可以使用System类中的成员方法改变标准输入流等对应的设备,例如可以将标准输出流输出的信息输出到文件内部,从而形成日志文件等。
2、成员方法
System类中提供了一些系统级的操作方法,这些方法实现的功能分别如下:
a、arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
该方法的作用是数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效。
使用示例:
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);
该代码的作用是将数组a中,从下标为1开始,复制到数组b从下标3开始的位置,总共复制2个。也就是将a[1]复制给b[3],将a[2]复制给b[4],这样经过复制以后数组a中的值不发生变化,而数组b中的值将变成{0,0,0,2,3}。
b、currentTimeMillis方法
public static long currentTimeMillis()
该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。例如:
long l = System. currentTimeMillis();
则获得的将是一个长整型的数字,该数字就是以差值表达的当前时间。
使用该方法获得的时间不够直观,但是却很方便时间的计算。例如,计算程序运行需要的时间则可以使用如下的代码:
long start = System. currentTimeMillis();
for(int i = 0;i < 100000000;i++){
int a = 0;
}
long end = System. currentTimeMillis();
long time = end – start;
则这里变量time的值就代表该代码中间的for循环执行需要的毫秒数,使用这种方式可以测试不同算法的程序的执行效率高低,也可以用于后期线程控制时的精确延时实现。
c、exit方法
public static void exit(int status)
该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。
d、gc方法
public static void gc()
该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。
e、getProperty方法
public static String getProperty(String key)
该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示。
属性名列表
属性名 |
属性说明 |
|
Java 运行时环境版本 |
|
Java 安装目录 |
|
操作系统的名称 |
|
操作系统的版本 |
|
用户的账户名称 |
|
用户的主目录 |
|
用户的当前工作目录 |
例如:
String osName = System.getProperty(“os.name”);
String user = System.getProperty(“user.name”);
System.out.println(“当前操作系统是:” + osName);
System.out.println(“当前用户是:” + user);
使用该方法可以获得很多系统级的参数以及对应的值。
参考:
相关推荐
Java中System类 Java中System类是一个基础的类,提供了多种方式来与控制台进行交互,包括输入、输出和错误处理。该类是Java.lang包中的一个重要组件,主要提供了三个静态变量:System.out、System.in和System.err,...
Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类...
819-4631 Sun Java Enterprise System 术语表 820-0103 适用于 UNIX 的 Sun Java Enterprise System 5 安装指南 820-0451 适用于 UNIX 的 Sun Java Enterprise System 5 发行说明 820-0589 适用于 UNIX 的 Sun ...
对于Java中System类的有关问题做下的思维导图,便于深化记忆,希望对你有帮助!注意:文件为.mm后缀建议下载freemind打开,免费的思维导图软件!
Java 11 includes a built-in modularity framework, and The Java Module System is your guide to discovering it. In this new book, you'll learn how the module system improves reliability and ...
在Java编程语言中,`System.getProperty`方法是一个非常实用且重要的功能,用于获取与系统相关的属性信息。这些属性包括但不限于操作系统、Java运行环境版本、安装目录等关键信息,对于理解和调试程序运行环境有着不...
例如,`System`类在`java.lang`包中,提供了系统相关的常量和方法,如`System.out.println()`用于输出信息。 4. **垃圾收集(Garbage Collection, GC)**: Java自动管理内存,通过GC回收不再使用的对象占用的内存。...
通过阅读《Sun Java™ System RFID Software 2.0开发指南》,开发者将具备开发高效、可靠的RFID应用所需的技能和知识,从而在日益增长的物联网世界中发挥关键作用。而819-2618.pdf文件很可能是这份指南的电子版,...
java System源码 system类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和...
Java Desktop System 发行版2 疑难解答指南 ------------------------ 本手册包含与Sun Java™ Desktop System 发行版2 相关的故障排除信息。
031104_【第11章:Java常用类库】_System类笔记
Jess__The_Java_Expert_System_Shell:DistributionCategory UC-411 SAND98-8206 (revised)Unlimited Release First Printed November 1997 Jess, The Java Expert System Shell ...
Java 中 File 类的使用方法 Java 中的 File 类是 java.io 包中的一员,它提供了对文件和文件夹的操作。下面是对 File 类的使用方法的详细讲解。 构造函数 File 类有多个构造函数,分别是: * `public File...
Java中的System类是java.lang包下的一个类,它提供了一系列与系统相关的方法。System类无法被实例化,也不能被继承,它所提供的方法可以用来获取系统属性、环境变量、内存信息以及执行垃圾回收等操作。本文将通过...
在Java中,我们可以利用`Character`类提供的方法或者简单的条件语句来实现这一功能。 首先,`Character`类提供了几个静态方法用于判断字符类型,如`isUpperCase(char)`用于判断字符是否为大写字母,`isLowerCase...
总结,Java中的Class类是Java反射机制的核心,它代表了运行时的类信息。通过Class对象,我们可以动态加载类、创建对象、访问类的成员,实现运行时的灵活性和动态性。了解并熟练掌握Class类及其相关方法,对于理解和...
在给定的文件列表中,`writeutfLib`可能是一个实现了JNI接口的动态链接库,而`WriteExample`可能是一个Java示例项目,展示了如何在Java中调用`writeutfLib`中的C++类和方法。通过运行这个示例,我们可以看到Java如何...
在这段代码中,`Javaexception`类包含了对年龄和姓名的设置方法,并且这些方法可能会抛出异常。特别是`setAge`方法中,如果传入的年龄不合法(不在0到150之间),则会抛出自定义异常`MyException`。 #### 三、其他...
在实际开发过程中,使用Sun Java System ASP 4.0 的开发者需要熟悉ASP语法和Java环境的结合,理解如何配置和管理服务器,以及如何调试和优化代码。相关的开发工具可能包括IDE(如Eclipse或NetBeans),以及各种调试...