Java培训:jvm内存组件,你了解多少

更新时间: 2021-10-15 09:53:31来源: 粤嵌教育浏览量:11321

  JVM使用的内存不仅仅是堆。例如,Java方法、线程堆栈和本机句柄在内存中与堆以及JVM内部数据结构分开分配。若想要更加系统更加详细的学习 JVM 知识,建议参加java培训,有经验丰富的专业讲师面授指导教学,能够帮你更全面了解JVM。


  -Xmx参数的值控制Java堆的最大大小,Java堆不是JVM分配的唯一内存。除了永久性生成或Metaspace(基于java,从JDK 8起,Meta Space就在那里),CodeCache,其他JVM内部使用的本机C++堆,线程堆栈的空间,直接字节缓冲区,GC开销,以及JVM内存消耗中包含的其他东西。


  以下是一些其他JVM内存组件:


  Metaspace(元空间)


  JDK 8之前的HotSpot JVM有第三种类型的生成,称为永久生成,它与Java堆相邻。它包含JVM用来描述应用程序中使用的类和方法的元数据。从JDK 8开始,Permanent被一个称为Metaspace的新空间所取代,该空间与Java堆不相邻。Metaspace是从本机内存中分配的。MaxMetaspaceSize参数限制JVM中Metaspace的使用。默认情况下,Metaspace没有限制,它以非常小的默认值开始,并根据需要以较小的增量增长。Metaspace只包含类元数据,所有活动Java对象部分都被移动到堆内存中,因此Metaspace的使用率远低于永久生成。通常,无需指定最大Metaspace大小,除非面临较大的Metaspace泄漏。在java培训中,也有关于JVM内存的学习,学好这部分的知识,可以避免在工作中出现的很多问题。



  CodeCache


  CodeCache是包含JVM生成的本机代码的内存区域。JVM生成本机代码的原因有很多。这些原因包括动态生成的解释器循环、JNI存根和由JIT编译器编译成本机代码的Java方法。JIT编译器贡献了大部分代码缓存区域。


  ThreadStackSize/Xss


  -XX:ThreadStackSize=size设置线程堆栈大小(以字节为单位)。附加字母k或K表示千字节,m或M表示兆字节,或g或G表示千兆字节。Xss的默认值取决于您运行的操作系统和体系结构。此选项相当于-Xss。


  JVM一向很好的帮我们管理内存,它是Java程序运行的环境,同时是一个操作系统的一个应用程序进程,因此它有自己的生命周期,也有自己的代码和数据空间。参加java培训学习,可以在短时间内获得很大提升,避免在学习上多走弯路,节省时间,提高学习效率。

免费预约试听课