请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

反射中“编译时”和静态存储区的“编译时”,有什么区别?

反射这一节讲到编译时和运行时,编译时是将java代码编译成.class文件的过程,不涉及内存方面的任何事情。将静态存储区是,说程序编译时内存就分配好了。这两个“编译”,我有点糊涂,是同一个概念吗?

正在回答 回答被采纳积分+3

2回答

提问者 慕九州147196 2017-08-04 16:55:16

问题的描述没有突出重点,我困惑的是:静态存储区,说程序编译时内存就分配好了,但是“编译时”不是不设计内存方面的事儿吗?这两种说法是不是有矛盾?

0 回复 有任何疑惑可以回复我~
  • Luzhuo #1
    这两个不是同一个概念:
    第一个"编译时": 是说把java代码编译成.class文件,只涉及对java的语法是否正确之类的检查;
    第二个"编译时": 是说, 在你写的代码还未被执行之前, JVM会把你的代码加载到 静态存储区 ,然后才去执行你的代码,才会有后面的对应的栈 , 堆.
    回复 有任何疑惑可以回复我~ 2017-08-04 17:30:52
  • Luzhuo #2
    补充: JVM会把你的静态代码(static修饰的方法 / 变量)加载到 静态存储区
    回复 有任何疑惑可以回复我~ 2017-08-04 17:46:48
  • 提问者 慕九州147196 #3
    多谢了,听你这样解释能理解了
    回复 有任何疑惑可以回复我~ 2017-08-06 21:17:38
Luzhuo 2017-08-04 15:20:04

编译时: 将java源代码编译成.class文件

运行时: 内存已被分配成 静态存储区, 栈, 堆

0 回复 有任何疑惑可以回复我~
  • DocMike #1
    非常正确!
    回复 有任何疑惑可以回复我~ 2017-08-04 19:51:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信