首页
注册
登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请
登录
V2EX
›
runjvm
›
全部回复第 1 页 / 共 1 页
回复总数
2
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 出来的实例对象总是在堆里。
关于
·
帮助文档
·
博客
·
API
·
FAQ
·
实用小工具
·
1317 人在线
最高记录 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms ·
UTC 23:37
·
PVG 07:37
·
LAX 15:37
·
JFK 18:37
Developed with
CodeLauncher
♥ Do have faith in what you're doing.