找实习,两次电面都被问到了java内存模型的问题,找了很多资料,还是不太懂,大概有这样几种。
- java内存有堆和栈的区别,基本数据类型的值和引用以及对象的引用都是存放在栈里的,而对象是存放在堆里的,栈中的数据是可以共享的。
- jvm系统中存在一个主内存,java中所有的变量都储存在主内存中,对于所有线程都是共享的;每个线程都有自己的工作内存,工作内存中保存的是主存中某些变量的拷贝。
- 还有一篇文章提到将一个jvm实例的内存区域划分为了方法区、内存堆和内存栈
不太明白这些说法之间的异同和之间的联系,这个问题应该怎么回答?
还想知道在执行java HelloWorld这句命令的时候jvm都执行了哪些操作?