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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄或俊 中级黑马   /  2012-4-23 17:27  /  3023 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static修饰的成员都放在内存的方法区中,为什么main()方法会放在栈内存中呢!~
求原理求真相!

5 个回复

倒序浏览
本帖最后由 王明(1988) 于 2012-4-24 15:25 编辑

额,static修饰的成员变量,由于是静态变量要放在data segment中(内存的数据段中),老师说的方法区不专业(查一下组成原理就知道内存到底分哪些区,额jvm中也可以叫方法区,刚知道来改下我的错误),而main方法是一个方法,
jvm调用main方法之前,是将main中的代码暂存在内存的code segment中(内存的代码段,如果你做过反汇编破解就有共鸣了),在执行main中的语句时,将一些局部变量放入栈中,
当然每一个方法对应有一个方法栈,里面存储局部变量。main结束局部变量也从栈里释放了。
看我黑马日记第三蛋:http://bostonivy4me.blog.163.com/blog/static/19156133120123234105442/
回复 使用道具 举报
不是main这个方法放在栈内存,main中的代码放在代码段,而执行时变量放在栈里面。。。。分清了就ok
回复 使用道具 举报
main方法放在代码段中。执行时变量放在栈里面
回复 使用道具 举报
很赞同2楼的观点,分析的不错哦
回复 使用道具 举报
  Main函数详解
public static void main(String[] args)
主函数特殊之处:
1,格式是固定的。
2,被jvm所识别和调用。
public:因为权限必须是最大的。
static:不需要对象的,直接用主函数所属类名调用即可。
void:主函数没有具体的返回值。
main:函数名,不是关键字,只是一个jvm识别的固定的名字。
String[] args:这是主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型。

我的面向对象总结里面有,论坛里找找吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马