当前位置:首页 > 内存 > 正文

jvm内存结构图

  • 内存
  • 2024-05-30 14:09:05
  • 2467

一、详解JVM内存结构组成

你了解JVM内存结构吗?它主要包括两个子系统和两个组件:Runtimedataarea组件和Nativeinterface(本地接口)。)组件

JVM内存结构

如,JVM存储结构主要包括两个子系统和两个组件。这两个子系统是类加载器子系统和执行引擎子系统的两个组件。NativeInterface组件(本地接口)

classloader子系统的作用

将类文件的内容加载到runtimedataarea中的methododarea(方法区)中基于给定完全限定的类名(例如javalangObject),Java程序员可以扩展javalangClassLoader类来编写自己的类加载器

子系统的作用

执行类中的指令每个JVM规范实现(JDK)的核心是执行引擎。各种JDK,比如IBM的JDK、IBM的JDK,主要依赖于它们实现的执行引擎。好还是坏

与原生库交互是与其他编程语言交互的接口。当你调用原生方法时,你就进入了一个不再受虚拟机限制的新世界。因此,也很容易让原生HeapOutOfMemory受JVM控制

RuntimeDataArea组件

这就是我们常说的JVM内存,主要分为五个部分:—

Heap虚拟Java实例中只有一个堆空间

MethodArea加载的类的信息存储Methodarea的内存中。当虚拟机加载某种类型时,会使用该类加载器找到对应的类文件,然后读取该类文件的内容并传输给虚拟机

虚拟机JavaStack(JavaStack))仅在Javastack上以帧为单位直接执行两个操作。移动或打开堆栈

ProgramCounter每个线程都有自己的PC寄存器。线程启动时创建的PC寄存器的内容总是指向接下来要执行的地址,这里可以是本地指针,也可以是方法区中方法的起始指令对应的偏移量

Nativemethodstack。(本地方法栈)存放进入作用域的native方法的地址

lishixinzhi/Article/program/Java/hx/201311/26038


二、JVM参数配置及详解-Xms-Xmx-Xmn-Xss调优总结(点赞收藏)


深入剖析JVM参数调优:-Xms、-Xmx、-Xmn、-Xss的秘密


堆内存管理

JVM在Cache内存结构中,堆(H)是主要地方,它是年轻代(young)和老年代(old,JDK1.7之前)/元空间(metaspace,JDK1.8之后)。32/64位系统的堆大小受内存物理限制,最大值通常由-Xmx决定。初始堆大小由-Xms定义,建议两者保持一致以保持内存稳定性。


典型配置示例
-Xmx3550m:设置最大堆大小,确保充分利用系统资源。
-Xms3550m:分配堆内存,避免启动时重复调整。
-Xmn2g:建议将老年代/元空间比例保持在3:5,以平衡年轻代大小、新处理和内存构成。
-Xss128k:控制线程堆栈大小、内存碎片和线程升级。
垃收集器选择:并行收集器(如-XX:+UseParallelGC)适合高端场景,多核CPU-XX:ParallelGCThreads。
老年代优化:--XX:+UseParallelOldGC启用并行老年代集群,减少GC对应用程序的影响。
控制GC暂停时间:--XX:MaxGCPauseMillis设置为100毫秒,以保证最短的暂停时间。
调整策略
年轻一代:注重响应时间,多设置;在遵循评分过程的同时适当地最大化它。
老一代:保持低中断和低回收频率,并根据应用要求仔细调整。
分区管理:启用-XX:+使用CMSCompactAtFullCollection定期压缩内存。
注意事项
重复GC可能是由、中间件或内存不足引起的。
通过getMemUsage()监控内存使用情况并调整堆栈大小和堆栈大小以优化性能。
根据应用程序类型调整堆栈内存和堆栈大小对于GUI应用程序,建议使用标准GC。
硬件和算法的影响

硬件性能(内存、CPU和交换)对于GC效率至关重要。内存分配经过优化,可减少频繁发生的交换使用量。


新一代采用复制算法,高效且不可中断。
上一代和Metaspace使用标记压缩或标记清理算法,所以要注意碎片和内存移动。
最终建议

在面试过程中,了解这些结构和原则是关键。继续学习和分享Spring面试题、SpringBoot等一系列Spring资源,获取更多学习资料,帮助你与技术一起成长。祝愿大家在技术的道路上不断进步!


上一篇:jvm内存参数配置

下一篇:查看jvm内存