JDK7中静态变量保存在什么地方?

发布于 2022-09-12 00:38:37 字数 129 浏览 19 评论 0

最近看深入理解java虚拟机,讲方法区的部分说到jdk7把字符串常量池和静态变量等从永久代移出了,但好像没说这两者移出后放到了什么地方,在网上查了一下,看到字符串常量池从jdk7开始就被放到了堆中,但是我始终没搜到jdk7关于静态变量的存放位置

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独岁月 2022-09-19 00:38:37

先说结论:JDK7以上,静态变量存储在其对应的Class对象中。而Class对象作为对象,和其他普通对象一样,都是存在java堆中的。

所谓方法区、GC堆,都是JVM规范定义的逻辑模型,他们的具体实现并没有规定死,不同的虚拟机可以有不同的实现策略。也就是说,方法区和GC堆并不是冲突的概念,方法区甚至可以放在GC堆里面。

在Oracle的bug database中,有静态域迁移至Class对象的记录
参考:move static fields into Class to prepare for perm gen removal

纸短情长 2022-09-19 00:38:37

Java里面没有什么静态变量一说吧。我概念有点混。Java里面常说的是类静态成员变量。这个变量是和类在一起的。应该是在方法区里面。你在在找点资料吧。我也不是很清楚的样子。希望这个回答可以给你一点意见性作用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文