类加载的时间问题

类加载的时间问题

静态成员是在类加载的时候开辟空间的,那么类加载是我程序写好了,编译过程中发生的还是运行中发生的呢,如果我运行完了,只是吧静态成员的代码删除了,但是不运行,那么这片空间还有吗,还是第二次运行的时候,因为没有这个静态成员,才把空间释放了呢

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你这理解不太对呀

你(javac)编译一个.java文件只是生成一个.class字节码,这个程序还没有运行呢,只是在硬盘里的字节码

你(java)解释运行时,这个代码才执行呢,然后才有什么加在到内存里的事

就是你有一本外文工作指南,这工作指南是放在书架上的.java文件(书架相当于硬盘)

你开始执行javac命令编译这本指南,就相当于你把指南从书架上拿下来,逐条翻译成汉语并写在一个.class的文件中,这个文件又放在书架上。

然后你开始执行java解释运行命令,那么你才把翻译好的指南里的任务记在脑子里,当你任务完成了,你的注意力下降了,刚刚的任务你就逐渐都遗忘了。

你脑子里记不记得任务和书架上书中的内容已经没有关系了


  • 慕UI2433440 提问者 #1
    也就是编译完成后的运行过程中,静态成员才开辟空间,不管有没有创建对象这篇空间都在,然后我把代码删除了,再次执行程序,因为类中没有静态成员了,所以运行期间空间就释放了对吧
    2020-05-21 16:50:23
  • 苍星乱舞 回复 提问者 慕UI2433440 #2
    你先别管什么静态成员。整个程序是只有在运行时才会被加载到内存里,不然就是存储在硬盘里的文件。 你电脑里有好多个游戏,你同时开好几个是不是觉得卡,那你的做法是不是关掉其他的游戏,你不会说是把其他游戏直接删了吧。 程序运行完,关闭就不在内存里了,不用等到什么第二次运行
    2020-05-21 17:02:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师