之前看到几个帖子涉及这个内容,所以自己总结了一下,分享给大家。(本来是给一个帖子回复的,打着打着发现打多了,就干脆再发个帖子让大家都能看到吧)
java一共有五个区:堆区,方法区,栈区,本地方法栈,程序计数器。
方法区:是存放虚拟机加载类的相关信息,如类、静态变量和常量;
堆: 所有数组和对象的实例分配都在Java堆上分配内存(比如new的对象);
栈区:在栈帧中包括局部变量表、操作数栈、指向当前方法所属的类的运行时常量池(运行时常量池的概念在方法区部分会谈到)的引用、方法返回地址和一些额外的附加信息。【按毕老师的解释来吧,就是存放局部变量】
本地方发栈:Java栈的作用和原理非常相似。区别只不过是Java栈是为执行Java方法服务的,而本地方法栈则是为执行本地方法(Native Method)服务的。在JVM规范中,并没有对本地方发展的具体实现方法以及数据结构作强制规定,虚拟机可以自由实现它。在HotSopt虚拟机中直接就把本地方法栈和Java栈合二为一。
程序计数器:用来指示执行哪条指令的(我就这么记的)【什么pu寄存器之类的,java应该不是指的那个,而是java自己的程序计数器。原理都是执行哪条语句】
希望能帮到大家。深夜码字,把我给打精神了……本来困的睁不开眼了。祝大家好梦 |
|