内存管理与垃圾收集—自动化的典范.pptVIP

内存管理与垃圾收集—自动化的典范.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
内存管理与垃圾收集—自动化的典范 ——什么是“垃圾” Object References =NULL Another Object ——当Object在作用域内 //创建字符串对象,并将引用s指向该对象 String s1 = new String(); //另一引用,引用同一对象 String s2 = s1; //将s1赋值为null,此时s2仍指向这一对象,此String对象还不是垃圾 s1 = null; //将s2引用另一个对象,此时原String对象以无引用,成为垃圾 s2 = “abc”; ——什么是“垃圾” ——当Object在作用域外 public void exsample1(){ Double d = new Double(26.77); System.out.println(d); } public void exsample2{ exsample1(); } ——什么是“垃圾” ——并不是被引用的对象就一定不是垃圾 class Island{ public Island brother; } Island i1 = new Island(); Island Object i1.Brother Island Object i2.Brother Island i2 = new Island(); i1 i2 i1.brother = i2; i2.brother = i1; i1 = null; i2 = null; ——什么是垃圾 ——线程垃圾(除满足一般条件外,还要求线程已死亡或未启动) //定义线程垃圾类 class RubbishThread extends Thread{ //定义一个自身类型的引用 RubbishThread brother; String rName; public RubbishThread(){} public RubbishThread(String rName){this.rName = rName;} public void run(){ System.out.println(rName + “线程开始执行!”); try{ Thread.sleep(1000); }catch(Exception e){e.pringStackTrace();} System.out.println(rName + “线程运行结束!”); } public void finalize(){ System.out.println(rName + “对象成为垃圾,并被回收”); } } ——什么是垃圾 ——线程垃圾(除满足一般条件外,还要求线程已死亡或未启动) public class example{ public static void main(String[] args){ RubbishThread r1 = new RubbishThread(“r1”); RubbishThread r2 = new RubbishThread(“r2”); r1.brother = r2; r2.brother = r1; r1.start(); r1 = null; r2 = null; System.gc(); try{ Thread.sleep(2000); }catch(Exception e){e.printStackTrace();} System.gc(); try{ Thread.sleep(1000); }catch(Exception e){e.printStackTrace();} } } ——垃圾收集器 内存中有了“垃圾”就需要清理,以便为创建其他对象让出空间,而垃圾收集器扮演了这个清洁工的角色。这就将开发人员从繁杂的内存管理中解放出来,专注于业务逻辑的开发,可以大幅度的提高开发效率,降低开发难度。 开发人员需要做的工作仅仅是将不需要的对象根据规则“标识”为垃圾,而垃圾收集器何时收集垃圾,如何收集垃圾都不需要开发人员关心。需要注意的是,由于垃圾收集器的运行是由系统自动控制的,因此垃圾收集器何时收集垃圾是没有保障的。 其次,垃圾收集器就是一个后台守护线程,在内存充足的情况下其优先级很低,一般不出来运行,当垃圾充斥着内存,严重影响程序的执行时,其优先级会提高,并出来运行收集垃圾,清理内存。正因如此,垃圾收集器的运行时间是没有保障的。 ——申请垃圾收集器运行 Runtime类中的几个常用方法 public static Runtime getRuntime() 该方法将返回一个与当前运 行程序相关的Runtime类的

文档评论(0)

学习让人进步 + 关注
实名认证
文档贡献者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档