黑马程序员技术交流社区

标题: 毕老师第七天的视频--主函数main到底是在栈中还是在方法区呀 [打印本页]

作者: 苑占丽    时间: 2012-7-12 16:32
标题: 毕老师第七天的视频--主函数main到底是在栈中还是在方法区呀
主函数main到底是在栈中还是在方法区呀
作者: 朱东方    时间: 2012-7-12 16:42
在 栈内存 中 ,函数都在栈内存中
作者: 范泰洋    时间: 2012-7-12 16:45
本帖最后由 范泰洋 于 2012-7-12 17:08 编辑

JVM内存分Heap()Stack()两类内存空间。栈空间是用于线程的方法调用的
main()属于方法,所以主函数main()在栈内存中。
被static修饰的成员变量,被所有对象共享,但是不存储在堆内存中,而是方法区。

作者: 李志群    时间: 2012-7-12 16:58
本帖最后由 李志群 于 2012-7-12 16:59 编辑

是栈内存中的啊   
主函数的定义 public:代表着该函数访问权限是最大的。
             static: 代表着主函数随着类的加载就已经存在了。静态修饰符,调用主函数不需要创建所在类对象对象,直接用类名即可。
             void:代表着主函数没有具体的返回值。
             main:不是关键字,但是是一个特殊的单词,可以被JVM识别。
             函数的参数(String [] args(参数的变量名)):函数的参数,参数类型是一个数组,该数组中的元素是字符串,字符串类型的数组。

作者: 陈云帆    时间: 2012-7-12 16:59
main函数是放在方法区中的,而且是独立的一片空间,main函数在调用其他函数,其他函数的返回值也是返回给main的
方法区:
1.  将被装载类型的信息放到方法区
2.  方法区中包含了在整个程序中永远唯一的元素(类的代码信息、常量、静态变量、字符串常量)
3.  被所有线程共享

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

栈:
1.  每个线程一个栈,栈中的数据是私有的,其他栈不能访问
2.  局部变量在栈中存放
3.  栈是一块连续的内存空间,由系统自动分配,速度快。
希望对你有帮助
作者: 山水游客    时间: 2012-7-12 17:23
主函数在栈内存中,主函数在运行时会在栈内存中分配空间,类中的方法,共享数据存放在方法区中




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2