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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨永峰 中级黑马   /  2012-5-23 21:52  /  4312 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

main()函数也是静态方法,按道理应该存放在方法区中,但是老师上课的画的说明图(下图)中main函数放在栈中?是出于什么原因?




评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
怎么没人回答呢?问的问题有问题??
回复 使用道具 举报
main方法是在方法区中的,你红色花的那个是在main方法中建立的一个对象或变量,那么对象名回变量名是放在栈内存中,存着指向对象或数据的地址的。
回复 使用道具 举报
main()方法是静态的,存放在方法区,你所谓的在栈里面有main那是这个函数的入口地址,相当于一个引用,程序开始执行时找到这个入口开始执行程序,它指向的位置还是方法区实际的内容
回复 使用道具 举报
存放在栈内存中,main函数,作为程序的入口,可以被JVM调用。
另外main:不是关键字,但是是一个特殊的单词,可以被JVM识别的。
由jvm自动分配释放 ,存放函数的参数值,局部变量的值。
回复 使用道具 举报
main函数是放在方法去中的,而且是独立的一片空间,但是虚拟机得调用啊,那个图是说main()函数进栈了,就是说 他是一个引用,指向方法区静态池中的一片空间,运行完之后会退栈的。main函数在调用其他函数,其他函数的返回值也是返回给main的

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
隋丙跃 发表于 2012-5-24 13:03
main函数是放在方法去中的,而且是独立的一片空间,但是虚拟机得调用啊,那个图是说main()函数进栈了,就 ...

有些明白了,图中的这个栈是线程级的还是进程级的?还是。。。
回复 使用道具 举报
贾旭 中级黑马 2012-5-24 13:19:15
8#
main函数的执行代码是在方法区,但是引用还是得进栈。引用是在栈内存中的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马