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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

主函数main到底是在栈中还是在方法区呀

5 个回复

倒序浏览
在 栈内存 中 ,函数都在栈内存中
回复 使用道具 举报
本帖最后由 范泰洋 于 2012-7-12 17:08 编辑

JVM内存分Heap()Stack()两类内存空间。栈空间是用于线程的方法调用的
main()属于方法,所以主函数main()在栈内存中。
被static修饰的成员变量,被所有对象共享,但是不存储在堆内存中,而是方法区。
回复 使用道具 举报
本帖最后由 李志群 于 2012-7-12 16:59 编辑

是栈内存中的啊   
主函数的定义 public:代表着该函数访问权限是最大的。
             static: 代表着主函数随着类的加载就已经存在了。静态修饰符,调用主函数不需要创建所在类对象对象,直接用类名即可。
             void:代表着主函数没有具体的返回值。
             main:不是关键字,但是是一个特殊的单词,可以被JVM识别。
             函数的参数(String [] args(参数的变量名)):函数的参数,参数类型是一个数组,该数组中的元素是字符串,字符串类型的数组。
回复 使用道具 举报
main函数是放在方法区中的,而且是独立的一片空间,main函数在调用其他函数,其他函数的返回值也是返回给main的
方法区:
1.  将被装载类型的信息放到方法区
2.  方法区中包含了在整个程序中永远唯一的元素(类的代码信息、常量、静态变量、字符串常量)
3.  被所有线程共享

堆:
1.  存储的全部都是对象(即new出来的东东)
2.  JVM只有一个堆区,被所有线程共享
3.  堆是不连续的内存空间,是由new分配的,获得比较灵活,但是速度慢。

栈:
1.  每个线程一个栈,栈中的数据是私有的,其他栈不能访问
2.  局部变量在栈中存放
3.  栈是一块连续的内存空间,由系统自动分配,速度快。
希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
山水游客 来自手机 中级黑马 2012-7-12 17:23:19
地板
主函数在栈内存中,主函数在运行时会在栈内存中分配空间,类中的方法,共享数据存放在方法区中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马