Java Non Heap Memory和Stack Memory有什么区别?如果不是,它们是否相同?两者之间有什么区别?

user2885295:

我正在使用Jconsole监视Java应用程序。内存选项卡显示不同的堆和非堆内存,例如

  1. 堆内存使用情况
  2. 非堆内存使用
  3. 内存池“ CMS Old Gen”
  4. 内存池“ Par Eden Space”
  5. 内存池“ Par Survivor Space”
  6. 内存池“代码缓存”
  7. 内存池“ CMS Perm Gen”

这些术语之间有什么区别。还请提供一些有关-如何通过监视这些参数来发现应用程序行为异常的信息。

热舔:

在所有基于C的语言(和大多数其他语言)中,基本上有三类存储:

  1. 叠放
  2. 静态的(有几种变化)

堆你熟悉的。

您也很熟悉堆栈,但您只是不知道。当您具有带有“局部”变量的方法时,这些变量将在“调用框架”中分配。调用方法时分配“调用框架”,而从方法返回时将其删除,因此,最有效的方法是使用随调用而增长而随返回而收缩的“堆栈”。

静态是您没有明确分配的东西,从程序开始执行时就已经存在。

堆栈所需的空间通常很小,并与上述类别中的“非堆内存”集中在一起。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章