仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1663|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页设计关于finalize()办法的注释。

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:55:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。原题:
我在thinkinginjava中瞥见以下一段代码。

//:Garbage.java
//Demonstrationofthegarbage
//collectorandfinalization

classChair{
staticbooleangcrun=false;
staticbooleanf=false;
staticintcreated=0;
staticintfinalized=0;
inti;
Chair(){
i=++created;
if(created==47)
System.out.println("Created47");
}
protectedvoidfinalize(){
if(!gcrun){
gcrun=true;
System.out.println(
"Beginningtofinalizeafter"+created+
"Chairshavebeencreated");
}
if(i==47){
System.out.println(
"FinalizingChair#47,"+
"SettingflagtostopChaircreation");
f=true;
}
finalized++;
if(finalized>=created)
System.out.println(
"All"+finalized+"finalized");
}
}

publicclassGarbage{
publicstaticvoidmain(String[]args){
if(args.length==0){
System.out.println("Usage:
"+
"javaGarbagebefore
or:
"+
"javaGarbageafter");
return;
}
while(!Chair.f){
newChair();
newString("Totakeupspace");
}
System.out.println(
"Afterallchairshavebeencreated:
"+
"totalcreated="+Chair.created+
",totalfinalized="+Chair.finalized);
if(args[0].equals("before")){
System.out.println("gc():");
System.gc();
System.out.println("runFinalization():");
System.runFinalization();
}
System.out.println("bye");
if(args[0].equals("after"))
System.runFinalizersOnExit(true);
}
}///:-

为何实行javaGerbagebefore
今后,当一切对象创立完(好比8000个),这时候只扫除了2000个(不定)
应当只能创立47个对象啊


剖析:
起首,在一个轮回傍边创立对象,而且只是创立,而不援用,也就是说这个对象会主动的被体系看成渣滓处置失落。但请注重,finalize()办法并非立即就会实行的,实行的工夫完整由体系来决意。以是很有大概的情形是已创立了20000个对象,才入手下手个中的某一个对象的扫除事情(这大概和工夫大概体系内容的占用有关)。看finalize()办法中的一段代码:
if(!gcrun){
gcrun=true;
System.out.println(
"
Beginningtofinalizeafter"+created+"Chairshavebeencreated
at");
}
就会呈现如许的了局:
Beginningtofinalizeafter25038Chairshavebeencreated

这时候对象的创立历程仍在持续(由于已Finalize的对象还不满47个,Chair.f仍是false)。以是Chair.created会持续增添。
直到有47个对象被扫除了,Chair.f被置成true了,创立对象的轮回才停止。看main办法中的一段代码:
System.out.println(
"
Afterallchairshavebeencreated:
"
+"totalcreated="
+Chair.created
+",totalfinalized="
+Chair.finalized+"
");
如上所说,Chair.created是不休增添的,而在这段代码实行之前,又会有N个对象被开释失落了,以是finalized也增添了。
了局多是如许的:
totalcreated=29096,totalfinalized=73

实在这一历程和你利用的JVM有很年夜干系,实行了局大概会很不不异。但有一点是能够一定的,那就是我们没法断定JVM甚么时分做对象的扫除事情(这也是Thinkinginjava中这段代码的想要申明的),大概会在这个对象方才“无用”的时分就扫除失落了,也大概滞后几秒,乃至永久不扫除。

假如你的开辟情况撑持跟踪的话,你能够以STEP的体例运转,你会看到运转了局年夜不不异。给你看看我的运转了局:
Created47
Beginningtofinalizeafter25038Chairshavebeencreated
FinalizingChair#47,SettingflagtostopChaircreation
Afterallchairshavebeencreated:
totalcreated=45993,totalfinalized=1800
gc():
runFinalization():
bye
All45993finalized

注重最初一行,由于工资的停留,JVM有充足的工夫将一切的对象都扫除了。

结论:
不克不及期望finalize()办法能不乱的事情,特别不克不及依托它来做文件的封闭等操纵,因为finalize()的不断定性,常常得不到你想要的了局。现实上我们只必要晓得一切无用的对象,JVM会本人扫除就够了。

什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。
若天明 该用户已被删除
沙发
发表于 2015-1-21 17:00:26 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-30 21:27:09 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
小妖女 该用户已被删除
地板
发表于 2015-2-5 07:52:14 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-10 07:12:36 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
因胸联盟 该用户已被删除
6#
发表于 2015-2-26 18:29:02 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
柔情似水 该用户已被删除
7#
发表于 2015-3-6 21:41:23 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
老尸 该用户已被删除
8#
发表于 2015-3-13 21:41:13 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-20 19:22:50 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
不帅 该用户已被删除
10#
发表于 2015-3-31 04:34:45 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
灵魂腐蚀 该用户已被删除
11#
发表于 2015-4-1 23:10:55 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
精灵巫婆 该用户已被删除
12#
发表于 2015-4-11 10:17:32 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
小魔女 该用户已被删除
13#
发表于 2015-4-14 01:58:53 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
谁可相欹 该用户已被删除
14#
发表于 2015-4-28 03:16:26 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
只想知道 该用户已被删除
15#
发表于 2015-5-1 09:11:08 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
飘灵儿 该用户已被删除
16#
发表于 2015-5-3 19:29:26 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
若相依 该用户已被删除
17#
发表于 2015-5-9 06:08:55 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
冷月葬花魂 该用户已被删除
18#
发表于 2015-6-17 20:28:01 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
深爱那片海 该用户已被删除
19#
 楼主| 发表于 2015-6-27 16:20:29 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
再现理想 该用户已被删除
20#
发表于 2015-7-7 13:20:11 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 18:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表