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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尤洋 中级黑马   /  2012-8-1 13:15  /  1770 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 尤洋 于 2012-8-1 18:07 编辑

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

5 个回复

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

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

嗯,有点眉目了,但main函数是否也存在于方法区呢,如果是的话那怎么做到 同时占用栈内存和方法区两片内存
回复 使用道具 举报
http://blog.csdn.net/a859522265/article/details/7282817
我这块不是很懂,给个链接给你看看
你说的main也是个静态的方法.你自己想一想吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马