A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Zero霖 于 2014-3-4 16:21 编辑

如题,弱弱的问一下,static变量是存到在内存的哪个区域中??来自: iPhone客户端

5 个回复

倒序浏览
内存总体一共分为了4个部分stack segment(栈)、heap segment(堆)、code segment(代码区)、data segment(静态区)
当我们在程序中,申明一个局部变量的时候,此变量就存放在了 stack segment(栈)当中,具体方法执行结束之后,系统自动释放JVM内存资源
当new 一个对象的时候,此对象放在了heap segment(堆)当中,jvm不定时查看这个对象,如果没有引用指向这个对象就回收。
而全局变量,static静态变量和字符串常量则存在在 data segment(静态区)中,不会释放
code segment(代码区)存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
static的变量存放在内存中的静态区里,它不随着对象的消失而消失,还有我个人觉得也应该重点记住,static修饰的方法,也就是静态方法,它优先于对象存在,所以静态方法可以类名. 去调用!希望对你有帮助
回复 使用道具 举报
内存方5区:栈,堆,方法区,本地方法区,寄存器。静态变量代码放在方法区的静态区域里。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
方法区里面的静态区域
回复 使用道具 举报
静态修饰的方法只能静态方法去调用,或者类名.调用.静态成员随着类的加载而加载,生命周期比较长,存在于内存静态方法区

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马