A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 权跃杰 中级黑马   /  2012-8-8 14:27  /  1244 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

许多书上说,当某个对象不存在对它的引用的时候即被当做垃圾,有可能被不定时的回收。
但对于那些临时对象或者说一次性的对象比如:
        System.out.print("java");
        new Dog().someMethod();//字符串对象"java” 和对象dog new 出来并没有赋给某个引用变量
我不明白的是像"java" ,dog这样的对象会不会被当成垃圾,恰恰刚被new出来就被回收了,毕竟垃圾回收器的运行是一个独立的
进程。JVM是怎么处理这种情况的!

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1

查看全部评分

1 个回复

倒序浏览
匿名对象的意义在于 方便调用方法,像一次性筷子一样只能用一次,调用完毕之后才会成为垃圾,
所以不会刚一new出来就被当成垃圾处理掉。
至于你所说的 System.out.print("java"); 中字符串对象“java”,我觉得它会缓存在 常量池中,一旦有其他引用变量 想要 创建“java”对像就会在常量池中查找是否存在该对象
存在的话就直接指向它,不存在才会重新创建。而常量池中缓存的部分会随着新的内容进入而慢慢消失。
   纯属个人理解,有错误的地方的话,欢迎指证。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马