返回信息流jvm中的方法区可以存储字符串常量,类的实例等
常量池存储的是一些常量,例如final类型的,
他们之间有什么关系?常量池的主要作用是什么?搞不懂了
这是一条镜像帖。来源:北邮人论坛 / java / #52894同步于 2016/9/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java中常量池是干什么用的,现在看文章看蒙了
nijian81
2016/9/13镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 nuanyangyang 的大作中提到: 】
: 常量不放在常量池里,放在哪里?
比如字符串常量是放在方法去的,这个字符串常量是放在常量池吗?
【 在 nijian81 的大作中提到: 】
: 比如字符串常量是放在方法去的,这个字符串常量是放在常量池吗?
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5.4
自己看JVM Spec吧。不过,这些都是概念上的。不用太在意。具体的JVM实现,想把东西存在哪里就存在哪里。具体的JVM里或许并没有专门的一个“方法区”。
运行时常量池是方法区的一部分,里面放的是字面量和符号引用。字面量就是字符串和final类型的变量。建议参考暖洋洋大神的提供的一手资料,或者参考[深入理解JVM虚拟机],并且自己打开生成的类文件看看,这样或许就懂那么一丢丢了。
我理解方法区是存储一些类变量,就是static修饰的那些;而常量池是一种对象池,就是为了复用对象、避免频繁创建销毁对象带来的性能损耗而设立的,存储在对象池的变量类型必须是final的。这是主要区别,嗯
【 在 iamluo 的大作中提到: 】
: 我理解方法区是存储一些类变量,就是static修饰的那些;而常量池是一种对象池,就是为了复用对象、避免频繁创建销毁对象带来的性能损耗而设立的,存储在对象池的变量类型必须是final的。这是主要区别,嗯
常量池用于存储对象,避免频繁创建性能消耗,是不是final类型的对象,不管new几次,都是同一个对象?
方法区存储类变量,必须用static休息,好像不对吧.