Java 6和Java 7中的字符串文字的垃圾收集(Oracle Jdk)

 为爱进地狱天堂_954 发布于 2023-02-12 17:13

根据著名本书深入浅出Java页面661:

" Garbage Collector doesn't go inside String pool."

在阅读了关于SO的类似问题后,我发现了如下混合答案:

    字符串文字的垃圾收集与普通对象相同. 读这个

    一些答案反过来说.在这里阅读答案.

我的问题是:

    如何在Java 6及之前收集字符串文字垃圾?

    因为在Java 7中,将在堆上创建字符串文字,与Java 6相比,Java 7中字符串文字的垃圾收集将如何不同?

Aniket Thaku.. 6

字符串文字是实习的.从Java 7开始,H​​otSpot JVM将实际的字符串放入堆中,而不是permgen.

在java 7之前,hotspot将perings中的字符串放入.然而,在permgen实习的字符串被垃圾收集.显然,permgen中的Class对象也是可收集的,因此permgen中的所有内容都是可收集的,但在某些旧JVM中默认情况下可能不会启用permgen集合.

被实习的字符串文字将是由实体池中的String对象声明的Class对象所持有的引用.因此,只有在收集了引用它的Class对象时才会收集实习文字字符串.

摘自:( 来源).

1 个回答
  • 字符串文字是实习的.从Java 7开始,H​​otSpot JVM将实际的字符串放入堆中,而不是permgen.

    在java 7之前,hotspot将perings中的字符串放入.然而,在permgen实习的字符串被垃圾收集.显然,permgen中的Class对象也是可收集的,因此permgen中的所有内容都是可收集的,但在某些旧JVM中默认情况下可能不会启用permgen集合.

    被实习的字符串文字将是由实体池中的String对象声明的Class对象所持有的引用.因此,只有在收集了引用它的Class对象时才会收集实习文字字符串.

    摘自:( 来源).

    2023-02-12 17:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有