当前位置: 首页 > 面试题库 >

JVM-堆与栈

彭俊智
2023-03-14
问题内容

每当加载一个类时,什么存储在堆中以及什么存储在堆栈中?

线程也驻留在哪里?


问题答案:

引用类型在堆中。

任何原始类型的数据和对堆上值(方法的参数/局部变量)的引用都在堆栈上。

每个线程都有自己的堆栈。

应用程序中的所有线程共享同一堆。



 类似资料:
  • 问题内容: 我们在 Tomcat 服务器上部署了一个Web应用程序。我们运行某些计划的作业,然后堆内存达到峰值并稳定下来,一切似乎都很好。但是,系统管理员抱怨内存使用率(Linux上的“ top”)随着计划的作业的增加而不断增加。堆内存和CPU内存之间有什么关联?可以通过任何JVM设置来控制它吗?我使用 JConsole 监视系统。 我通过JConsole强制进行垃圾收集,并且堆使用率下降了,但是

  • 我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?

  • 问题内容: jvm进程的内存使用量一直在增加,并且从未减少。我通过在linux服务器上执行top进行检查。该应用程序正在将作业调度到群集(使用Quartz + SunJava DRMAA API) Java堆空间在应用程序生命周期内保持在限制之内,但是jvm进程显示内存使用率稳定增长且从未下降。 这是内存泄漏吗?如果是这样,为什么堆空间在限制之内。有人可以解释一下。 更新: 当我通过jconsol

  • 我们Java开发人员有时会使用来确保我们为每个特定于线程的堆栈提供了1MB的空间。现在,我经常感到困惑,JVM从哪里借用了1MB,从堆或系统内存中借用,或者Java为线程分配任何特定的内存。你能帮我理解一下吗? 此外,我们是否有一个可视化(插件)运行时工具,可以以可理解的方式显示堆和堆栈的内容? 提前感谢。

  • 问题内容: 在阅读有关该主题的已问问题和大量谷歌搜索之后,我仍然无法清楚了解 -Xms 选项 我的问题是:和之间有什么区别? 现在,我有以下答案: 唯一的区别是在应用程序运行期间将运行的垃圾回收数量和内存分配数量。我对吗 ? 这是我获得此答案的原因: 将选项设置为不会导致我的应用程序在启动后真正占用物理内存。我想这与现代OS虚拟内存管理和惰性页面分配有关。(我注意到,在Linux上由top或Win

  • 当抛出与堆空间不足相关的异常时,我增加了java Xmx内存限制。但是,我目前正在经历一个很长的执行时间,可能与内存相关,但我还没有看到抛出的异常。 我想知道是什么导致了长的执行时间。JVM是否将堆交换到磁盘? 我正在使用HotSpot 1.6.0更新34。