首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java的字符串常量池在哪里,堆还是栈?

Java的字符串常量池在哪里,堆还是栈?
EN

Stack Overflow用户
提问于 2011-02-07 13:48:09
回答 1查看 104.5K关注 0票数 110

我知道JVM用来处理字符串文字的常量池和字符串常量池的概念。但是我不知道JVM使用哪种类型的内存来存储字符串常量文字。堆栈还是堆?因为它是一个与任何实例都没有关联的文本,所以我假设它将存储在堆栈中。但是如果它没有被任何实例引用,那么文本必须由GC run收集(如果我错了,请纠正我),那么如果它存储在堆栈中,该如何处理呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-07 14:02:09

从技术上讲,答案是两者都不是。根据Java Virtual Machine Specification,存储字符串的区域在runtime constant pool中。运行时常数池内存区是按类或按接口分配的,因此它根本不与任何对象实例绑定。运行时常量池是方法区域的一个子集,它“存储每个类的结构,例如运行时常量池、字段和方法数据,以及方法和构造函数的代码,包括在类和实例初始化以及接口类型初始化中使用的特殊方法”。VM规范指出,尽管方法区域在逻辑上是堆的一部分,但它并没有规定在方法区域中分配的内存必须受到垃圾收集或其他与分配给堆的正常数据结构相关联的行为的影响。

票数 76
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4918399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档