JVM技术问题的超级大疑惑,求解

对于JVM的内存模型中,堆和栈以及常量池、元数据区有些许疑惑。希望有朋友能解答一下各自的作用以及区别~

这里讲解的比较细致,可以参考下:

简单理解
堆存放引用类型
栈存放值类型
常量就存放再堆里面 就是一个变量而已
元数据区听名字都知道了 就是放一些自带的东西的

谢谢提供帮助

从实用角度考考虑。
堆存放的是对象实例,堆空间的查看只能说某一刻的。
栈存放的是方法和方法中德局部变量,堆得查看主要用于查看类对应方法的调用情况,一般都是结合成日志的。
常量池概念与运行时常量池不同,常量池在字节码即class文件中,常量池主要是一些基本变量类型的常量,而运行时常量池则是一些复杂对象修饰了final成为运行时常量,存在于方法区。
元数据区在JDK7和JDK8有不同含义,以前叫做方法区,也叫永久代,存放运行时常量池、类信息、JIT即时编译代码缓存,也就是代码执行在这块缓存上执行。
如还有其他问题继续反馈。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^