我想说lz应该理解错了,不是主函数不可以定义在方法区,而是主函数一定在方法区!因为所有jvm加载的类都在方法区,楼主认为的在栈中,应该是局部变量和操作栈!
比如说我在mian中定义了Object o = new Object();那么这一句话作为了main函数的东西,会编译为class文件,jvm加载时会加载class文件,也就是说main函数的类信息会在方法区中!那么函数运行时,o由于是局部变量会加载到栈中!而new Object()是堆中的内容!
所以他们的内存是相互联系的!
我看《深入理解jvm》是做了一些笔记我,希望有用: