关于Java中System.gc() 与System.runFinalization()
System.gc :
告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确定的。只是建议进行回收
System.runFinalization():
网上搜了一下很多人都说强制调用已经失去引用的对象的finalize方法。但是我用下边的程序测试了一下
class Chair{
public int i;
public static int created = 0;
public Chair() {
i = ++created;
}
@Override
protected void finalize() throws Throwable {
System.out.println("第" + i +"个Chair调用finalize方法");
}
}
public class Garbage{
public static void main(String[] args) {
for (int i = 0; i < 47; ++i) {
new Chair();
//System.out.println("runfinalize");
System.runFinalization();
//System.gc();
}
}
}
显然我们每次new出来的Chair都已经都已经没有引用了,但是调用System.runFinalization();这些没有引用的对象还是不调用finalize这个函数,很奇怪,然后就已知搜,然后看到的仍让是很多说的强制执行。
后来看了一下JDK里面的说明:
Calling this method suggests that the Java Virtual Machine expend
* effort toward running the <code>finalize</code> methods of objects
* that have been found to be discarded but whose <code>finalize</code>
* methods have not yet been run. When control returns from the
* method call, the Java Virtual Machine has made a best effort to 注意是suggest that 同gc一样都是建议JVM。 所以JVM可以选择执行或者不执行
关于Java中System.gc() 与System.runFinalization()的更多相关文章
- 对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高不少,并且不受NTP等外部服务影响,能准确更准确来统计耗时(java中对应的是System.nanoTime),也就是说所有使用gettimeofday来统计耗时(java中是System.curre
对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高 ...
- Java中JIN机制及System.loadLibrary() 的执行过程
Android平台Native开发与JNI机制详解 http://mysuperbaby.iteye.com/blog/915425 个人认为下面这篇转载的文章写的很清晰很不错. 注意Android平 ...
- JAVA中的GC机制详解
优秀Java程序员必须了解的GC工作原理 一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只 ...
- Java中的GC操作及相关概念
一.GC Roots Tracing的基本思路:通过一系列名为"GC Roots"的对象作为起始点,从这些节点开始向下搜索,搜索所经过的路径称为引用链(Reference Chai ...
- java中的GC(gabage collection)如何工作
1. “引用记数(reference counting)”是一种简单但速度很慢的垃圾回收技术.每个对象都含有一个引用记数器,当有引用连接至对象时,引用计数加1.当引用离开作用域或被置 为null时,引 ...
- java中的GC
1.GC发生在JVM中的堆区 2.GC是很么? 1.次数上频繁收集Young区 Minor GC 2.次数上较少收集Old区 Full GC 3.基本不动的Perm区 3.G ...
- python中print()函数的“,”与java中System.out.print()函数中的“+”
python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能. python中: print("hello,world!") 输出 ...
- java中实现与.net的format格式化字符串输出
Java中的格式化字符串 System.out.println(MessageFormat.format("name={0}", "张三")); .net中的格 ...
- Java中 float、double使用注意问题
在java中运行一下代码 System.out.println(2.00-1.10);输出的结果是:0.8999999999999999很奇怪,并不是我们想要的值0.9 再运行如下代码:System. ...
随机推荐
- logstash的各个场景应用(配置文件均已实践过)
场景: 1) datasource->logstash->elasticsearch->kibana 2) datasource->filebeat->logstash- ...
- selenium webdriver testng自动化测试数据驱动
selenium webdriver testng自动化测试数据驱动 selenium webdriver testng自动化测试数据驱动 一.数据驱动测试概念 数据驱动测试是相同的测试脚本使用不同的 ...
- Linux系统——Keepalived高可用集群
#### keepalived服务的三个重要功能1. 管理LVS负载均衡软件Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动,停止功能,这使得 ...
- innob and myisam存储引擎分析
首次啊对比一下两者的区别: MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义 ...
- marquee实现跑马灯
<!DOCTYPE html><html> <head><title>跑马灯大全</title> </head> <bod ...
- Python消息队列工具 Python-rq 中文教程
原创文章,作者:Damon付,如若转载,请注明出处:<Python消息队列工具 Python-rq 中文教程>http://www.tiangr.com/python-xiao-xi-du ...
- Linux命令:删除与恢复命令
敲命令按以下顺序 ①vim filename ②e ③i ④ESC 删除命令: x(小写):删除光标所在处字符. dd:删除光标所在的行. D:删除从光标所在之处开始直到该行末尾的全部字符. < ...
- kafka监控工具
Kafka Web Conslole Kafka Manager KafkaOffsetMonitor.
- centos7.3安装redis
yum install epel-release yum install redis 如果支持从其他机器能访问,需要修改配置文件 /etc/redis.conf,注释掉 bin 127.0.0.1 如 ...
- idea生成springboot jpa的实体对象
在idea的database里面添加上数据库 File-->Project Structure Modules--->点击加号----->选择JPA 选择确认之后再主面板上就会出现 ...