gpt4 book ai didi

java - Java 的 interned 字符串会被 GC 处理吗?

转载 作者:行者123 更新时间:2023-12-04 05:04:57 25 4
gpt4 key购买 nike

在跟踪可能的内存泄漏时,我发现了以下现象。 Java 7 回收内部字符串或 jmap 是否不准确?

# jmap -heap 9724 |实习生
正在附加到进程 ID 9724,请稍候...
调试器连接成功。
检测到服务器编译器。
JVM 版本为 23.3-b01
10526 个实习字符串,占用 880048 字节。

# jmap -heap 9724 |实习生
正在附加到进程 ID 9724,请稍候...
调试器连接成功。
检测到服务器编译器。
JVM 版本为 23.3-b01
10514 个实习字符串,占用 878984 字节。

# jmap -heap 9724 |实习生
正在附加到进程 ID 9724,请稍候...
调试器连接成功。
检测到服务器编译器。
JVM 版本为 23.3-b01
10519 个实习字符串,占用 879720 字节。

环境:
Linux 版本 2.6.32-220.23.1.el6.centos.plus.x86_64 (mockbuild@c6b5.bsys.dev.centos.org) (gcc 版本 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) ) #1 SMP 周二 6 月 19 日 04:14:37 BST 2012

java版本“1.7.0_07”
Java(TM) SE 运行时环境(构建 1.7.0_07-b10)
Java HotSpot(TM) 64 位服务器 VM(构建 23.3-b01,混合模式)

最佳答案

是的,回收了实习字符串。并按照 Java SE 7 Features and Enhancements 中的规定建议:

In JDK 7, interned strings are no longer allocated in the permanent generation of the Java heap, but are instead allocated in the main part of the Java heap (known as the young and old generations), along with the other objects created by the application. This change will result in more data residing in the main Java heap, and less data in the permanent generation, and thus may require heap sizes to be adjusted. Most applications will see only relatively small differences in heap usage due to this change, but larger applications that load many classes or make heavy use of the String.intern() method will see more significant differences.

关于java - Java 的 interned 字符串会被 GC 处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com