当前位置: 首页 > 知识库问答 >
问题:

热点Java/JVM如何存储内存?

谷梁德容
2023-03-14

除了这些地方之外,hostspot JVM进程还在哪里存储内存:

  • 烫发
  • 终身制发电
  • 伊甸园空间
  • 从空间
  • 到空间
  • 代码缓存

也就是说:热点进程可以保留哪些可能的方式

我能想到的一些答案(让我知道这些是不是真的):

  • 用于线程栈的虚拟内存没有用这些数字表示
  • 任何加载的dll或文件。

编辑:

给出的一些其他答案:

  • Java.exe本身
  • JNI方法可以分配内存本身
  • 任何本机代码(例如来自DLL)都可以分配内存。
  • 用于运行自身的通用 JVM 元数据

共有1个答案

秋向阳
2023-03-14

到目前为止,您是正确的(DLL包括所有JNI库以及它们分配的任何内存)。VM也有自己的代码(例如java的内容)、关于分配给java程序的内存的簿记信息,以及VM代理可能使用的内存。基本上,您在第一个列表中描述的是组成虚拟机“运行内存”的项目;JVM内存的其余部分是表示虚拟机“硬件”的所有项目,例如将其连接到操作系统网络、图形等的库。

 类似资料:
  • 问题内容: 嗨,我想知道我可以根据我的应用程序增加JVM的内存。如果是,如何增加JVM的内存?我怎么知道JVM的大小? 问题答案: 启动JVM时,可以调整两个参数以适合你的内存需求: 指定初始Java堆大小,并 最大Java堆大小。 http://www.rgagnon.com/javadetails/java-0131.html

  • 问题内容: java中的一个int数组作为一个32位值块存储在内存中。如何存储整数对象数组?即 我以为Integer数组中的每个元素都是对Integer对象的引用,并且Integer对象与其他任何对象一样都具有对象存储开销。 但是,我希望JVM能够在底层实现一些神奇的功能,因为Integer是不可变的,并且像整数数组一样存储它。 我的希望真是天真吗?在性能至关重要的应用程序中,整数数组是否比整数数

  • 我想改变(增加)Java内存限制(Windows PC上的JRE)。我到处都遵循以下命令: -xms设置初始Java堆大小 -Xmx设置最大Java堆大小 例如-Xmx1024m。 但我的问题是在哪里!我必须输入这个命令吗?抱歉这个初学者的问题。通常我对java没有任何接触。

  • 问题内容: 我阅读了JVM内存模型,并对以下内容感到困惑: JVM是否将.class实例存储在其内存中。如果是,则在哪个区域。 就像在加载类后,JVM生成了机器级代码,然后开始执行机器代码指令,然后仅在堆上创建对象,并填充了方法区域。 perm gen等区域存储字节码还是机器级代码? 烫发与方法面积 我真的很感谢您对此主题的任何帮助。 谢谢。 问题答案: 1)文件将在加载时存储在permgen存储

  • 我有一个非常消耗内存的程序,想使用-Xmx2048m为java jvm分配更多的最大内存。但在启动时,我得到一个“无法为对象堆保留足够的空间”错误。 当尝试多个值并发现我的最大值是时,它就开始了。但我喜欢分配2GB。在使用-Xmx1560m启动java进程后,我有6GB的物理内存,Taskmanager显示3400MB可用。 有人知道我为什么不能分配2GB吗?

  • 问题内容: 假设您有一个键类(KeyClass),该键类具有重写的equals,hashCode和clone方法。假设它有2个基本字段,一个String(名称)和一个int(id)。 现在您定义 现在 因此,就HashMap而言,keyOriginal,keyCopy和keyClone是无法区分的。 现在,如果您使用keyOriginal将条目放入HashMap,则可以使用keyCopy或keyC