首页
注册
登录
runjvm 最近的时间轴更新
runjvm
V2EX 第 210845 号会员,加入于 2017-01-14 23:14:12 +08:00
runjvm
提问
技术话题
好玩
工作信息
交易信息
城市相关
runjvm 最近回复了
2017-09-23 04:17:38 +08:00
回复了
linuxchild
创建的主题
›
Python
›
使用 Python 处理大文件有什么推荐的方式么?
之前的办法大概需要多久…
2017-04-27 00:02:32 +08:00
回复了
peneazy
创建的主题
›
程序员
›
关于 js 与 Java 堆栈内存的一些疑惑
前面很多同学说的都不太准确。
以 HotSpot 8 为例,静态变量并不存放在方法区或者 PermGen 或者 MetaSpace ,每一个类被解析后都有一个对应的 mirror 对象,这个对象是 java.lang.Class 类型,“方法区”存的只是元数据,譬如描述类的结构、各字段分别什么类型之类的,每一个类的元数据有个指针指向这个对应的 mirror 对象,静态变量是这个 mirror 对象的一个字段, mirror 对象不是只有那些静态变量对应的字段,它还有许多其他的字段用于 reflection 。而 mirror 对象其实都在堆上,于是静态变量作为其一个字段也在堆上。一个 Java 程序一旦运行其实最开始被分配的那些对象就是 primitive 类型对应的 mirror 对象。
所以短答案是,静态变量的元数据在方法区,但是静态本身在堆上。
至于前面同学说的逃逸分析,逃逸分析只在编译优化时发生,在解释器里 new 出来的实例对象总是在堆里。
»
runjvm 创建的更多回复
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
2874 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms ·
UTC 09:07
·
PVG 17:07
·
LAX 01:07
·
JFK 04:07
Developed with
CodeLauncher
♥ Do have faith in what you're doing.