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

JVM本地内存跟踪如何限制类元数据大小

楚俊逸
2023-03-14
JAVA_OPTS='-XX:+AlwaysPreTouch -Xmx128m -Xms128m -XX:MaxMetaspaceSize=150m -XX:ReservedCodeCacheSize=100m -XX:+UseStringDeduplication -XX:+PrintFlagsFinal -XshowSettings:vm -XX:NativeMemoryTracking=detail' ... -m="450m" --cpu-shares="256" docker-image
Total: reserved=1464054KB +843KB, committed=344578KB +1359KB

...

-                     Class (reserved=1124594KB +19KB, committed=85066KB +275KB)
                            (classes #15631)
                            (malloc=2290KB +19KB #20081 +27)
                            (mmap: reserved=1122304KB, committed=82776KB +256KB)
...

共有1个答案

崔高远
2023-03-14

这是压缩的类空间。

默认限制正好是1GB,可以通过-xx:compressedClassSpaceSize=n来减少。

本机内存跟踪输出中的“类”区域包括元空间和压缩类空间,这就是为什么您会看到超过1GB的保留空间。然而,保留的内存只是虚拟地址空间的数量--它不占用物理内存页。

 类似资料:
  • 本文向大家介绍详解JVM中的本机内存跟踪,包括了详解JVM中的本机内存跟踪的使用技巧和注意事项,需要的朋友参考一下 1.概述 有没有想过为什么Java应用程序通过众所周知的-Xms和-Xmx调优标志消耗的内存比指定数量多得多?出于各种原因和可能的优化,JVM可以分配额外的本机内存。这些额外的分配最终会使消耗的内存超出-Xmx限制。 在本教程中,我们将列举JVM中的一些常见内存分配源,以及它们的大小

  • 本文向大家介绍jvm最大内存限制多少?相关面试题,主要包含被问及jvm最大内存限制多少?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JVM (1)堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小 于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到

  • 问题内容: 在程序快要结束时,我希望将类的所有实例中的特定变量加载到字典中。 例如: 假设实例数量会有所不同,我希望将Foo()的每个实例的x dict加载到新的dict中。我该怎么办? 我在SO中看到的示例假定一个已经具有实例列表。 问题答案: 跟踪实例的一种方法是使用类变量: 在程序结束时,您可以像下面这样创建字典: 只有一个列表:

  • 1.3.2. 跟踪数据 作为一个有安全意识的开发者,最重要的一件事就是随时跟踪数据。不只是要知道它是什么和它在哪里,还要知道它从哪里来,要到哪里去。有时候要做到这些是困难的,特别是当你对WEB的运做原理没有深入理解时。这也就是为什么尽管有些开发者在其它开发环境中很有经验,但他对WEB不是很有经验时,经常会犯错并制造安全漏洞。 大多数人在读取EMAIL时,一般不会被题为"Re: Hello"之类的垃

  • 问题内容: 我想找出在调用函数期间(在Python中)分配的最大RAM量是多少。还有其他与跟踪RAM使用情况有关的问题: 建议使用哪个Python内存分析器? 如何剖析Python中的内存使用情况? 但是这些似乎允许您在调用方法(例如guppy)时更多地跟踪内存使用情况。但是,我要跟踪的是外部库中的一个函数,该函数无法修改,并且会逐渐占用大量RAM,但是一旦函数执行完成,就可以释放它。有什么方法可

  • 问题内容: 我在Linux中玩ptrace。我正在尝试使用/ proc / pid / mem接口编写跟踪进程的内存。 我用来完成此任务的功能是: 但是我总是会得到错误:编写:错误的文件描述符。 是否可以使用此方法编写跟踪过程? 问题答案: 您正在以只读模式()打开文件。我建议改用: 但是,从目前尚不清楚这是否可行: memory through open(2), read(2), and lse