★finalize 函数的调用机制
俺经常啰嗦:“了解本质机制的重要性”。所以今天也得先谈谈 finalize 函数的调用机制。在聊之前,先声明一下:Java虚拟机规范(见“这里”),并没有硬性规定垃圾回收该不该搞,以及该如何搞。所以俺这里提到的 finalize 函数的调用机制,或许适用于大多数 JVM,但【不保证】适用于所有的 JVM。
◇何时被调用?
finalize 啥时候才会被调用捏?一般来说,要等到JVM开始进行垃圾回收的时候,它才【有可能】被调用。而 JVM 进行垃圾回收的时间点是【非常】不确定的,依赖于各种运行时的环境因素。具体细节可以参见“本系列前一帖”。正是由于 finalize 函数调用时间点的不确定,导致了后面提到的某些缺点。
◇谁来调用?
说完何时调用,咱接着来聊一下被谁调用?
常见的 JVM 会通过 GC 的垃圾回收线程来进行 finalize 函数的调用。由于垃圾回收线程比较重要(人家好歹也是 JVM 的一个组成部分嘛),为了防止 finalize 函数抛出的异常影响到垃圾回收线程的运作,垃圾回收线程会在调用每一个 finalize 函数时进行 try/catch,如果捕获到异常,就直接丢弃,然后接着处理下一个失效对象的 finalize 函数。
★对 finalize 函数的误解和误用
◇把 finalize 理解为“析构函数”
学过 C++ 的同学应该都知道“析构函数”(不懂 C++ 的同学直接跳过此小节)。C++ 析构函数是在对象离开作用域的当口,【立即】被调用的。
很多从 C++ 转 Java 的同学会想当然地把 Java 的 finalize 函数牵强附会成 C++ 的析构函数(两者确实有某些相似之处)。然而,现实往往不是这么美好滴。由于 Java 的 finalize 函数和 C++ 的析构函数之间有许多非常【关键性】的差异,那些把 finalize 拿来当析构函数用的同学,是注定要碰壁滴(具体请看本文后面“finalize 函数的缺点”)。
◇依靠 finalize 来释放资源
很多同学寄希望于通过 finalize() 来完成类对象中某些资源的释放(比如关闭数据库连接之类)。
有这种企图的同学,请注意看本文后面的“finalize 函数的缺点”!
★使用 finalize 函数的注意事项
下面介绍的注意事项,有些可能和性能优化关系不大,俺也一并列出来。
◇调用时间不确定——有资源浪费的风险
前面已经介绍了调用机制。同学们应该认清【finalize 的调用时机是很不确定的】这样一个事实。所以,假如你把某些稀缺资源放到 finalize() 中释放,可能会导致该稀缺资源等上很久很久很久以后才被释放。这可是资源的浪费啊!
另外,某些类对象所携带的资源(比如某些 JDBC 的类)可能本身就很耗费内存,这些资源的延迟释放会造成很大的性能问题。
◇可能不被调用——有资源泄漏的风险
很多同学误以为 finalize() 总是会被调用,【其实不然】。在某些情况下,finalize() 压根儿不被调用。比如在 JVM 退出的当口,内存中那些对象的 finalize 函数可能就不会被调用了。
俺估摸着:还有同学在打 “runFinalizersOnExit” 的主意,来确保所有的 finalize 在 JVM 退出前被调用。但是,很可惜也很遗憾,该方法从 JDK 1.2 开始,就已经被废弃了。即使该方法不被废弃,也是有很大的线程安全隐患滴!企图打这个主意的同学,趁早死了这条心吧!
从上述可以看出,一旦你依赖 finalize() 来帮你释放资源,那可是很不妙啊(【有资源泄漏的危险】)!关于资源泄漏的严重性,俺在“这里”曾经提到过。很多时候,资源泄露导致的性能问题更加严重,万万不可小看。
◇对象可能在 finalize 函数调用时复活——有诈尸的风险
诈尸的情况比较少见,不过俺还是稍微提一下。
本来,只有当某个对象已经失效(没有引用),垃圾回收器才会调用该对象的 finalize 函数。但是,万一碰上某个变态的程序员,在 finalize() 函数内部再把对象自身的引用(也就是 this)重新保存在某处,也就相当于把自己复活了(因为这个对象重新有了引用,不再处于失效状态)。这种做法是不是够变态啊 :-)
为了防止发生这种诡异的事情,垃圾回收器只能在每次调用完 finalize() 之后再次去检查该对象是否还处于失效状态。这无形中又增加了 JVM 的开销。
随便提一下。由于 JDK 的文档中规定了(具体参见“这里”),JVM 对于每一个类对象实例最多只会调用一次 finalize()。所以,对于那些诈尸的实例,当它们真正死亡时,finalize() 反而不会被调用了。这看起来是不是很奇怪?
◇要记得自己做异常捕获
刚才在介绍 finalize() 调用机制时提到,一旦有异常抛出到 finalize 函数外面,会被垃圾回收线程捕获并丢弃。也就是说,异常被忽略掉了(异常被忽略的危害,“这里”有提到)。为了防止这种事儿,凡是 finalize() 中有可能抛出异常的代码,你都得写上 try catch 语句,自己进行捕获。
◇要小心线程安全
由于调用 finalize() 的是垃圾回收线程,和你自己代码的线程不是同一个线程;甚至不同对象的 finalize() 可能会被不同的垃圾回收线程调用(比如使用“并行收集器”的时候)。所以,当你在 finalize() 里面访问某些数据的时候,还得时刻留心线程安全的问题。
★结论
前面废了这么多话,最后稍微总结一下。俺窃以为:finalize 实在是 Java 的鸡肋。或许它对于【极少数】程序员有用,但对于大多数人(包括俺自个儿),这玩意儿压根儿没啥好处。大伙儿还是尽量不用为妙。
回到本系列的目录
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2009/06/java-performance-tuning-4-finalize.html
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2009/06/java-performance-tuning-4-finalize.html
有人打算整理一下关于编程随想下落的线索吗?(从正反两个方面来举证)
好多怪事都是人为的,第一在搞邪术如祭鬼封神献祭打call,其次是搞种姓的事,
这帮东西用老外的名义来操控挑拨玩弄这个那个,这也是奇葩的,和叫东土人找阿三还是鬼子去表达册封封禅这皇帝是东土的皇帝一样奇葩, ......
ym蜀人都不愿放手的东西如屁眼套路,幼女,献祭,老单和最高神位是有原因的,很值得去研究的 ......
即使博主能活着出狱,若要看到他更新六四系列,那也是在天朝发生了民主化之后,共产党不再有能力镇压批评者之时。
就算哪天中国情报部门不经司法程序,直接把人暗杀了,我也不会觉得奇怪。
https://www.zaobao.com.sg/realtime/china/story20241226-5649612
https://www.youtube.com/watch?v=ozVq_04XMro
如果出现了自杀场景,多半是政府秘密下令处决,并伪装成了自杀。
来自Firsthack的评论
而且,二审的发改率(发回重审+改判)是一个考核政绩的指标,高层认为这个数字越低说明冤假错案越少,然后下面就越容易升官。 ......
原神UID:310221197410210025
互动热线: 13524626271 上海移动
学历: 硕士
生日: 19741021
身高: 165 ......
周欣身份证310105197106042383
户籍地址 :上海市闵行区吴中路429弄15号501室
同户人 :薛军,男,310106196903180414,1969年03月18日; ......
希望各大媒体都报道这几个名字:审判长周欣,审判员:凌莉、须梅华。
家属贝震颖推特号:Birds_b_r_32309
多谢分享“中药注射剂”等国产医疗行业的相关丑闻。
另外,关于疫情期间的乱象,俺整理了一篇:
《每周转载:白纸抗议年的“动态清零”灾难(网文14篇,多图)》
多年前不记得在哪篇博文的评论区和博主讨论叙利亚的命运,当时叙利亚的局势还未尘埃落定。可惜博主现在大牢内,看不到。
这次叙利亚的民主转型发生在俄国陷入战争的泥沼的背景下。 ......
这个是个邪术,第一个是给上面看(不知什么鬼),其次的就真的会指导目标去实际地去做这么些的犯罪邪恶,侵犯幼女的情节是经常频繁重复地出现地,和侵犯女性,还有就是生命 ......
估计到最高法院也没戏,可能会以9:0判决禁抖音。
欢迎提出不同观点。
你提到的是这二者之间的差异,俺也同意这些差异确实存在。
但是,俺要开始说但是了。从本文,咱们也可以讨论这二者之间的共性,至少包含以下方面: ......
玩邪术玩出个什么结果好歹给公开一下,拼命玩邪术还一声不吭,很危险的,要分享分享,劳资帮你们来研究研究
劳资相信这帮东西是能穿越时空的,现在是2019年的ZS,时空被改变穿越了。穿越时空的套路。这帮东西几千年都一个屌样,来几个十级地震都不会任何改变。 ......
现在的两党是争先比谁对华更强硬,已经通过的制裁法案不会松绑,已经加的关税也不会再降,否则就会被在野党骂成“通敌叛国”。
明年1月19日之前,抖音会被禁。
每天上网的好多人都在聊政治呢,难道你要把每一个聊政治的人都抓起来判刑?那也没用。因为年轻人越来越倾向于认为政治制度才是造成他们被困在他那个阶层的重要原因。 ......
这个博客对于政府的批评,大部分都是有理有据。你要是觉得哪里不对,可以反驳博主嘛。判7年是究竟有多心虚? ......
以色列做任何事,都是美国包容范围,和美国民意无关(甚至抗议都无效)。台湾今后也会差不多。
国会一旦提出新的关于台湾的法案,无论是军售,亦或是改善台湾的国际地位等等,都很容易造成近乎【全票通过】。 ......
然而,公报本身只是行政政府的声明,其效力不如法律。 ......
然而,现在的人们,对于不能证明是否为间谍的走线客,也不太宽容。估计人们会支持一律用“有间谍嫌疑”之类的理由,实行一律驱逐的政策。 ......
但是,有些两党已经形成共识的事,其实是不受太大影响的。例如:把台湾武装成以色列。
所以我估计,中共在川普第2任期的前2年之内,就会对台湾动手。
因为这次GOP在众院优势实在太小了,稍微发生一点差错,钟摆效应会让民主党夺回之。
参议院不好说。如果连参议院也丢了,那川普后两年就可能成为跛脚总统,啥事都干不了。
不服者会选择:明着顺从,其实背地里跟共产党对着干。
众议院估计是个险胜。
上次共和党在众议院也是微弱优势,导致议长难产。
这次应该不会难产,因为有川普在,他只要在台上喊几句,就可以让任何一个人当议长,其它共和党议员不会阻挠。 ......
根据NBC新闻:
https://www.nbcnews.com/politics/immigration/trump-may-deport-hundreds-thousands-migrants-biden-allowed-legally-ent-rcna179357 ......
就是先用民调测量其它选举,比如某个地方议员的选举,然后和民调进行对比,看女性候选人是否严重吃亏,是否和民调严重不符。
如果发生该现象,那得出的差额数字,就是该地隐藏的“害羞的性别歧视者”的百分比。 ......
因为“害羞的川粉”等受访者不诚实回答问题的现象,仍然使得民调失真。
贺锦丽连普选票都输了。
你民主党输得这么惨,总不能反思为啥没去迎合那些“黑命贵零元购”之类的种族主义口号吧?反思搞种族平权搞得过头了?
......
美国出了个川贼东。抗战前没做到【攘外必先安内】,这下麻烦大了。
恭喜美国又创造了世界纪录。
估计是川普险胜。
因为大法官的任命是由总统和参议院共同决定,如果总统是川普,那他就会提名非常有争议的保守派大法官。
......
......
川普险胜29%
其它情况基本可以排除。
我的意见是把第13问算成川普+1,他不是国家英雄,但很多人粉川。
然后把第12问算成贺锦丽+1,因为川黑人数太多了,这些人的票会投给贺锦丽。
◇以【川普】为中心展开
◇极化现象
这个没变
......
有一天,我们或许能用类似的思路,找到这些人的把柄,从而有利于清算工作。
只不过在现在,我这种平民可能不够使用AI干这些事的资格。
围观的人多的时候,可以顺便大声质疑警察的做法有无法律依据,给警察造成压力。
即便不说话,而只是去围观,也能造成一点压力。而且围观的风险很低。 ......
我判断他们这些操作主要是为了吓唬人,比如登记这个操作,是为了方便以后搞大清洗时候用的(但概率很小,只有像文革、战争那种特殊时期才会用到)。不过只要敢反抗的人足够多,他们的策略就不会起到太多效果。 ......
对于本案中,已经违反了现有法律的人,比如越权的检察官颜蔚、枉法的董玮、须梅华等人,如果中共已经对其违法行为做出一次处罚,那肯定还不够。到清算的时候,还要【再算一次】,以迫害罪重新起诉之。 ......
防范清算的唯一办法,就是做事的时候要对得起自己的良心;不然的话,光靠威胁那些想要清算你们的人是没用滴。你们抓不完的。
上次一经施压,线索就出来了(当然,威慑的价值是表示反对意见)
至少“RXH屏幕截图”这条线索来得蹊跷
总之,阮晓寰这人是一定要救的。
无论什么办法。哪怕是需要付出1条人命代价的办法都可以提出,因为有人愿意付出这个代价(但前提是这个办法必须靠谱,必须要有效救得了人才行)。
(然而,我认为这个说法是令人难以相信的。)
如果不去尝试改判这条路,就没办法向贝震颖等人证明中国政府的邪恶(远超她的想象)。
另外,我猜测她对反共的人可能还是蛮反感的,比方说,我猜她会认为是反共的人把她丈夫阮晓寰害惨了。 ......
......
找三四到局子里等劳资,怎么不找三四直接来找劳资,又不会发生什么,要找什么来兜这个底 ......
否则,大人物会很高兴,因为他们只需要把责任推给小人物就行了。然后,这个案子就会被某些小人物重判。
反正是零责任嘛,他们不会抵制上级的不合理命令。相反,我们恰好需要小人物【消极抗命】。 ......
陈吉宁是否对一审有责任,这个不好说。毕竟时间太短了。
不过,二审判决的责任很好推定。如果陈吉宁手下的法官维持原判,那我们将来就要抓陈吉宁问罪,无论他将来逃到哪个国家。 ......
一审宣判日2023年2月10日,陈吉宁于2022年10月28日上任。
这期间有大约4个月的时间,陈吉宁作为一把手,有4个月的时间可以影响一审判决。 ......
至于继任的陈吉宁,看二审表现。
办事的小人物也有出庭作证的义务,证明他们背后的老大是幕后黑手,以便减轻自己的罪责。 ......
刚才查到一个,上海政法委书记诸葛宇杰,这个也应该加入该清算的名单。
诸葛宇杰应当是其中一个有能力影响判决的人,如果本案遭到重判,那此人将也应该成为重点追究责任的对象。官职越高,越值得追究。 ......
https://x.com/Suyutong/status/1654760377165438977
@Suyutong ......
新二审法官无需为须梅华法官被撤换之前所羁押的这段时间负责;至于多出来的刑期嘛,超出多少,负责多少。
所以,我建议新二审法官把这个案子改判到3年半以下。 ......
根据法案,总统有权把期限再延长90天。也就是延期到2025年4月
阮晓寰案被多次延期,最近一次是延期至今年12月底审结。 ......
那么,如果能促成一两个有代表性的人物获释(比如编程随想博客博主阮晓寰),那样的话也有改善形象的作用,最终会对抖音将来的法庭判决有好处。 ......
如果按“无罪推定”原则,要求别人先去证明算法推荐有鬼,才肯处罚抖音,就太晚了(比方说,有一天台海战争爆发,年轻人从抖音上看到的到处都是有利于中共、不利于台湾的信息。那美国就会吃亏,援台阻力增加)。 ......
消息源:https://fox59.com/indiana-news/sen-mike-braun-said-interracial-marriage-ruling-should-be-left-to-states/ ......
这些都是在清算之日不能忘记的名字。
引用博主的 原话 :
......
根據我在上海看守所被關押的經歷,陳品霖的待遇很大概率是真的。
我在兩次共計65天的關押期間,沒有任何一次放風的經歷,而可見的放風場(我沒用過)僅是另一個頭頂有小天窗的封閉房間。僅管我是被單獨關押,我也從隔壁監室聽到過關押人數太多、不得不側身睡覺或者睡在地板上的說法 ......
夏巢川 Rei Xia @karasu_ga_warau
⚪️‼️《烏魯木齊中路》被捕導演 #陳品霖 的律師袁茂在9月26日發微博稱,陳品霖在看守所中遭到不人道對待,包括擁擠的睡覺條件,以及一個月才放一次風。在他們前往住所檢察官處反應情況時,檢察官也不見蹤影。 ......
对于阮晓寰案,上海法院要是再不放人,将进一步影响大批年轻人对于中国政治制度的看法。你判他刑,等于向年轻人自证是独裁制度,是专门靠镇压知识分子吃饭的。 ......
这个法律通过后,共产党的成年直系亲属将无法入境,也不能进行某些资产交易。
我建议被制裁对象的家属,赶紧促成释放阮晓寰博主等良心犯。这是你们自救的一个办法。在乌克兰战争期间,俄国寡头就是用类似的办法换取自己免于制裁的。 ......
推文出处 @Birds_b_r_32309
#编程随想 #阮晓寰
这一个多月,张冬硕律师来上海阅卷、会见了阮晓寰多次。基于一审的种种问题,阮晓寰本人、张律师和莫律师都分别于9月初上书高院,要求二审 依法 公开 开庭审理! ......
贝女士现在不锁推了,希望大家都去关注声援
总之,【环境差】就容易引发【癌症】。
这就是为啥我们希望阮晓寰二审获得【轻判】、减刑;降低得癌症的概率。
虽然民主党对非法移民确实更加友善,不过从长远看,我建议走线客对民主党也要留个心眼,同时重视共和党里面支持非法移民的少数派。
......
你可以谷歌搜索“阮晓寰”,这就是博主的真名。不过,本案恰巧还没有审理结束,他妻子@Birds_b_r_32309 在推特X上发声,要求大家多声援它,向当局施压,以便争取二审减刑。 ......
因为最近海地人有恐慌情绪,所以新闻转述了这个海地人所说的6年前车窗玻璃被砸那件事。
1938年,合法定居在德国的犹太人社区的玻璃也被砸碎,史称“水晶之夜”。
想必不久之后,华川粉会要求戴徽章,以便证明自己是合法移民,或者所谓的“良民”;至于那些不肯用这个徽章证明自己是良民的黄皮肤的人,自然就是非法移民了。 ......
关于斯普林菲尔德(Springfield)海地人吃猫的这个谣言,简单聊聊吧。
事情是这样的,起因是一个叫Erika Lee的大妈在脸书上贴了一篇文章,说我邻居丢了自己的宠物猫,怀疑是海地难民偷的。这个帖子被加上了“海地非法移民偷猫偷狗吃,大家赶紧看好宠物”的标题一传,一下子就爆了。 ......
以为非法移民不能投票就好惹是吧?
等到民主党大赦非法移民,2000万非法移民入籍美国获得投票权,你MAGA党就别想再选了。 ......
川普和MAGA大肆散布俄亥俄州Springfield海地人偷当地人宠物吃的谣言,煽动选民对移民的恐惧,反倒是让人关注到这个小城其实是移民帮助建设美国的典范。当地制造业外移造成了经济退化,在海地大地震后大量美国接纳的合法海地移民在此工作,小城重燃经济希望。 ......
美国的非法移民(比如走线客)可以抓住这个机会,帮海地合法移民发声、谴责川普。
记住:帮别人就是帮自己。
因为贺锦丽一旦对同情巴勒斯坦的这一方做出任何承诺,就会失掉另一方的选票(以色列这一方的金主就会放弃民主党,转而去帮川普),最终结果就是川普上台。 ......
当然了,拜登几乎没人粉他,大家当初都是因为讨厌川普才投给他的。
在拜登退选后,大家又去支持贺锦丽,才使她的民调变高。