finalize翻译(在J**A垃圾回收机制中,怎么解释一个对象的finalize只可能运行一次 求详解~)
本文目录
- 在J**A垃圾回收机制中,怎么解释一个对象的finalize只可能运行一次 求详解~
- 请求翻译,你将有30分的悬赏
- 帮我翻译英文信,谢谢大家
- 帮忙翻译
- 翻译成中文,3句,线上等,不难的
- 外贸英语翻译
- finalized的意思
在J**A垃圾回收机制中,怎么解释一个对象的finalize只可能运行一次 求详解~
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
我在thinking in java中看见以下一段代码。
//:Garbage.java
//Dem***tration of the garbage
//collector and finalization
class Chair {
static boolean gcrun=false;
static boolean f=false;
static int created=0;
static int finalized=0;
int i;
Chair(){
i=++created;
if(created==47)
System.out.println("Created 47");
}
protected void finalize(){
if(!gcrun){
gcrun=true;
System.out.println(
"Beginning to finalize after"+created+
"Chairs have been created");
}
if(i==47){
System.out.println(
"Finalizing Chair #47,"+
"Setting flag to stop Chair creation");
f=true;
}
finalized++;
if(finalized》=created)
System.out.println(
"All"+finalized+"finalized");
}
}
public class Garbage{
public static void main(String args){
if(args.length==0){
System.out.println("Usage:\n"+
"java Garbage before\n or:\n"+
"java Garbage after");
return;
}
while(!Chair.f){
new Chair();
new String("To take up space");
}
System.out.println(
"After all chairs have been created:\n"+
"total created ="+Chair.created+
",total finalized ="+Chair.finalized);
if(args.equals("before")){
System.out.println("gc():");
System.gc();
System.out.println("runFinalization():");
System***nFinalization();
}
System.out.println("bye");
if(args.equals("after"))
System***nFinalizersOnExit(true);
}
}///:-
为什么执行java Gerbage before
以后,当所有对象创建完(比如8000个),这时只清除了2000个(不定)
应该只能创建47个对象啊
分析:
首先,在一个循环当中创建对象,并且只是创建,而不引用,也就是说这个对象会自动的被系统当作垃圾处理掉。但请注意,finalize()方法并不是立刻就会执行的,执行的时间完全由系统来决定。所以很有可能的情况是已经创建了20000个对象,才开始其中的某一个对象的清除工作(这可能和时间或者系统内容的占用有关)。看finalize()方法中的一段代码:
if (!gcrun) {
gcrun = true;
System.out.println(
"\nBeginning to finalize after" + created + "Chairs have been created\nat ");
}
就会出现这样的结果:
Beginning to finalize after 25038 Chairs have been created
这时对象的创建过程仍在继续(因为已经Finalize的对象还不满47个,Chair.f还是false)。所以Chair.created会继续增加。
直到有47个对象被清除了,Chair.f被置成true了,创建对象的循环才结束。看main方法中的一段代码:
System.out.println(
"\nAfter all chairs have been created:\n"
+ "total created ="
+ Chair.created
+ ",total finalized ="
+ Chair.finalized+"\n");
如上所说,Chair.created是不断增加的,而在这段代码执行之前,又会有N个对象被释放掉了,所以finalized也增加了。
结果可能是这样的:
total created =29096,total finalized =73
其实这一过程和你使用的JVM有很大关系,执行结果可能会很不相同。但有一点是可以肯定的,那就是我们无法确定JVM什么时候做对象的清除工作(这也是Thinking in java中这段代码的想要说明的),可能会在这个对象刚刚“无用”的时候就清除掉了,也可能滞后几秒,甚至永远不清除。
如果你的开发环境支持跟踪的话,你可以以STEP的方式运行,你会看到运行结果大不相同。给你看看我的运行结果:
Created 47
Beginning to finalize af
created
Finalizing Chair #47,Setting flag to stop Chair creation
After all chairs have been created:
total created =45993,total finalized =1800
gc():
runFinalization():
bye
All45993finalized
注意最后一行,因为人为的停顿,JVM有足够的时间将所有的对象都清除了。
结论:
不能指望finalize()方法能稳定的工作,尤其不能依靠它来做文件的关闭等操作,由于finalize()的不确定性,往往得不到你想要的结果。事实上我们只需要知道所有无用的对象,JVM会自己清除就够了。
请求翻译,你将有30分的悬赏
敬启者,
关于来自银行的这一契约基金的立即移动,我在你的国家中进入你的银行帐户之内在阿比尚谢谢对我的建议的你的电子邮件回应,以便我能结束来在移动之后和你见面。 我想要你知道理由为什么我正在为你的协助在接受你的银行帐户的这一基金方面连络是因为在科特 D’Ivoire 我们这些公务员没被允许操作外国的银行帐户而且那是为什么我需要你的帮忙提供一个好银行解释这一基金转移。我想要你知道被说的契约是我和契约的 overinvoiced 已经被运行和真正的契约尊贵的被支付到承包商。
你必须现在做的将提供下列的个人细节,以便我能立刻在制造必需的文件方面着手进行以便我们能使结束没有任何的延迟的契约基金移动。
你必须送的个人的细节依下列各项:
1) 为契约「基金转移」的你的银行帐户数据。
2) 你的全名和住址
3) 你的直接电话和传真编号
4) 你的确认的副本
我想要保证你我们能使结束这移动在一一些每天如果我们能遵从必需的交易步骤避免延迟。
我正在等候你的证实电子邮件,以便我们能着手进行。
谢谢和上帝祝福你们。
工程师 Ibrahim Wahala
帮我翻译英文信,谢谢大家
我的资金财产符合一切法律。我将寄发给您任一个想要的证明,但必须首先肯定,并确信你会协助我完成我的使命。因为这些文件是唯一的证据,在没有确认你是否将协助前是不能给出去的,因此我需要你的最终承诺。我不得不再次提醒你,你我接触只是为了实现我的目标。
但是,我需要你们给我明确的承诺,你门不会占用资金。你答应协助我后,我会授权信贷公司让你来操作这些资金。
我患有食道癌已经一段时间了,根据医学专家提示只有几个月的生存时间。我现在已经说不出话只能勉强书写了。虽然偶尔能发音,但是书写是我唯一沟通的能力。所以我非常需要你的保证否则到死都没办法达到我的目的。我很高兴我们能用电子邮件的方式来沟通,请一直用电子邮件来沟通吧。
适当的时候,我会发给你信贷公司的联系细节。这些钱是存在一个可靠的信贷公司,而且非常安全,我的病使得自己没办法来进行直到你们来协助我分配这些资金。大概总额是15, 354, 000, 00.美金。
我再次衷心感谢你们的今后合作,为此所付出的很多工作。
明天早上我约好了我的医生,之后我会联系你告知我的健康状况以及后续情况。
帮忙翻译
请紧急对待此事,这是因为我们需要最终定下此项目。依照我们的研发项目,我们亟待一套完善的商业生产设备。
请注意,首先 finalize 不是“终结”,而是“将项目,计划等最终确立下来,定下来”这样的意思。
另外 R&D 是专有词汇,是指“研究与开发”,即 Research and Development 的简写。 manufacturing plant 是指“生产设备”或“生产厂房”。
本人翻译仅供参考。
翻译成中文,3句,线上等,不难的
但是, 为了使在我们之间的第一个交易落实,如果你能把数量增加到1000,我们准备给你5%的折扣。
因为我们的镭射印表机的需求在不断增加当,我们希望你将立即行动如果你考虑与我们一起订购妥善。
这是今天早晨我们电话讨论的确认。 随函附上我们订货No.CT504 fir 1500磅长岛绿茶在每袋到岸价葛兰敦给装船在6/ 7月期间36便士。
外贸英语翻译
我们的付款条件是即期证实,草案所不可撤销的信用证提供有利于我们,我们提前一个月到达装运,其余为在中国进一步谈判有效期为21天装船后的规定时间,并允许分批装运和转运
2在这个交易量小,我们准备接受即期装运的货物的价值以D / P付款。
3遗憾地通知你,虽然这是我们的愿望铺平了我们之间的业务顺利发展铺平道路,我们不能接受付款的D /甲
4,我们很遗憾我们无法作出任何安排特雷我们的惯例,这是由确认,对信用和空运文件和有效的介绍费不可撤销信用证支付至少21超出承诺的装运日期后。
5我们想提请你注意的是,作为一个特殊标志的鼓励,我们将考虑接受付款以D / P在此销售推stage.We相信这将极大地促进销售你的努力,我们等待你有利答复。
关于我们之间的交换传真六在过去几天里,我们很高兴能与您完成以下交易。
7我们有交给你为按订货单附上各条线索秩序pleasuer。
8,我们已收到,谢谢您的报价...并高兴地向您发送以下顺序,我们相信会收到您的最佳服务。
9,我们将会作为急需的货物,交货及时调整
finalized的意思
finalize
英
vt.
完成; 使结束; 使落实
vi.
定案; 把…最后定下来
网络
结束; 方法; 定妥
第三人称单数: finalizes 现在分词: finalizing
过去式: finalized 过去分词: finalized
这句话应该少了主语,我就先补个 it 吧。
It will be finalized after you are on board
It will be finalized是主句;
after you are on board做时间主语从句。
翻译就是:
等你上船/上飞机/上火车,它(根据你实际要描述的主语来翻译)就将结束/完成。
draft的英语例句
1. Officials have now been delegated to start work on a draft settlement.
现在已经委派官员着手起草解决方案。
2. When the first draft was completed, Nichols typed it up.
当初稿完成以后,尼科尔斯将它打印了出来。
3. The money was payable by a draft drawn by the home.
这笔钱可凭国内承兑的汇票支付。
4. Ten days later Carmen received a bank draft for a plane ticket.
10天后卡门收到了一张用于购买机票的银行汇票。
5. You pay for the car by banker’s draft in the local currency.
以本币银行汇票支付车款。
6. I’m supposed to have handed in a first draft of my dissertation.
我本该把论文的初稿交上去了。