追踪JVM中的本地内存

发布时间:2020-07-02 08:32:00 作者:sq5d428a5a0584a
来源:网络 阅读:404

1.概述

有没有想过为什么Java应用程序通过众所周知的-Xms和-Xmx调优标志消耗的内存比指定数量多得多?出于各种原因和可能的优化,JVM可以分配额外的本机内存。这些额外的分配最终会使消耗的内存超出-Xmx限制。

在本教程中,我们将列举JVM中的一些常见内存分配源,以及它们的大小调整标志,然后学习如何使用本机内存跟踪监视它们。

2.原生分配

堆通常是Java应用程序中最大的内存使用者,但还有其他人。除了堆之外,JVM还从本机内存中分配出一个相当大的块来维护类的元数据,应用程序代码,JIT生成的代码,内部数据结构等。在下面的部分中,我们将探讨其中的一些分配。

2.1. Metaspace(元空间)

为了维护有关已加载类的一些元数据,JVM使用名为Metaspace的专用非堆区域。在Java 8之前,被称为PermGen或Permanent Generation。 Metaspace或PermGen包含有关已加载类的元数据,而不是它们的实例,它们保存在堆中。

这里重要的是堆大小配置不会影响元空间大小,因为Metaspace是一个堆外数据区。为了限制Metaspace大小,我们使用其他调优标志:

推荐阅读:
  1. jvm内存配置
  2. JVM 内存结构

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java spring jvm

上一篇:deeplearning4j学习一

下一篇:安装php扩展

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》