请描述下Stack、Heap和Java(VM)Stack、Java Heap这些概念的区别(虚拟机实现)。Java虚拟机的实现本质上是由其他语言编写的应用程序,Java语言分配在JavaStack中的数据,从实现虚拟机的程序角度上看可能分配在Heap之中。(这是Java虚拟机规范里的一句话)
1、Stack、Heap:可以理解为
a)栈和堆 是一种数据结构
b)内存存储中的空间栈区,和堆区
2、Java(VM)Stack、Java Heap 是java中的内存模型
另附2图供参考:
其实这种问题搜索引擎搜一下很多的,给你发一个点击量很高的
https://blog.csdn.net/supingemail/article/details/19161347
记得哦!开发人员要善于使用搜索引擎!
stack可以分为jvm stack和native method stack。
1、jvm中每新建一个线程都会创建对应的jvm stack,他是属于线程的,此线程每一次调用一个方法都会压入一个栈帧,栈帧中包含方法中的局部变量、操作数栈和对运行时的常量池引用。
2、native method stack是提供给非java代码实现的本地方法堆栈,他是用来通过JNI调用c/c++实现的方法的。
heap是储存jvm中所有new出来的对象的具体实例,是GC主要监管的区域
深入理解可以产参考《深入理解JVM虚拟机》