黑马程序员技术交流社区

标题: 关于内存中成员的动向 [打印本页]

作者: 尤洋    时间: 2012-8-1 13:15
标题: 关于内存中成员的动向
本帖最后由 尤洋 于 2012-8-1 18:07 编辑

最近又返回来看视频前面的基础部分,发现很多以前不清楚的地方都开始变的明朗,但同时又意识到了一些新的问题
今天在看毕老师视频day3数组内存结构时,产生一个疑问。调用其他函数时(比如show),调用结束后就在栈内存中消失了,
那么main主函数由jvm自动分配释放 是否也是在调用结束后消失呢, 另外主函数前修饰符是static静态,不是应该存在与方法区么,为什么还会存在于栈内存?


作者: 王渠    时间: 2012-8-1 13:44
我来回答吧,首先可以确定的是,当main方法内部的东西运行完了后,它肯定也是要释放的。
其次,main的确应该在这个地方,因为其实它做为jvm的入口,是开启了一个线程,而线程开启才会划分一片栈空间出来。
可以理解成main就是一个线程。是作为这个区域存在的依据。
当学习到多线程后,会发现,多个线程开启后,会划分出多个区间,此时若main方法结束了,也不意味jvm的结束。
而多出来的每个区域都有自己存在的依据,run方法的内容,可以认为mian就是类似于run方法的一个方法。
作者: pphdsny3    时间: 2012-8-1 13:49
无论是函数还是变量,再被调用、声明时都会在内存中给他们开辟一片空间来,
当他们去调用其他的函数或则变量时,原先开辟的空间就会变成垃圾。
java有一套垃圾回收机制,会每隔一段时间就把这些垃圾的空间回收。
仅仅是个人的观点,可能有错误,望指教....
作者: 尤洋    时间: 2012-8-1 13:59
黑马王鹏 发表于 2012-8-1 13:49
无论是函数还是变量,再被调用、声明时都会在内存中给他们开辟一片空间来,
当他们去调用其他的函数或则变 ...

在堆内存中才有垃圾回收机制, 栈内存没有垃圾回收机制 因为用完就释放的话不需要垃圾回收。
我现在的疑问是main是有jvm自动分配释放,还是和其他函数一样被用完就释放
作者: 尤洋    时间: 2012-8-1 14:04
王渠 发表于 2012-8-1 13:44
我来回答吧,首先可以确定的是,当main方法内部的东西运行完了后,它肯定也是要释放的。
其次,main的确应该 ...

嗯,有点眉目了,但main函数是否也存在于方法区呢,如果是的话那怎么做到 同时占用栈内存和方法区两片内存
作者: pphdsny3    时间: 2012-8-1 14:11
http://blog.csdn.net/a859522265/article/details/7282817
我这块不是很懂,给个链接给你看看
你说的main也是个静态的方法.你自己想一想吧




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