[英]JVM allocates memory at declaration for primitive types, but not for non-primitive types?
[英]JVM Memory Types
我正在做一个监控项目; 我们有监视软件在工作,并从服务器重新收集指标。 一切工作正常,但是我们需要一些有关JVM内存使用情况详细信息。 我们有一些具有不同内存类型的列。 我们需要知道这些是什么:
我们为所有这些列(HeapMax,NonHeapMax,UsageMax,PeakMax和CollMax)获得了最大值,并且还使用了(HeapUsed,NonHeapUsed,UsageUsed,PeakUsed和CollUsed)
我们知道堆和非堆是什么,但是我们不知道使用率,峰值和Coll。
有人知道他们是什么吗?
先感谢您。
用法: -可能是目前所使用的内存(即应用于:图像中)
峰值:-可能是直到该时间为止的已提交内存(即,已提交:在图像中)
Coll:-可能是可以使用的最大内存(即,图像中的Max :)
最大值:在运行的JMV的生存期内固定不变。
已使用和已承诺 :根据负载而有所不同。
我已经附上了JConsole的快照,其中列出了这些属性。
从Java 文档链接:
MemoryUsage对象表示内存使用情况的快照。 通常,MemoryUsage类的实例由用于获取有关Java虚拟机的单个内存池或Java虚拟机的整个堆或非堆内存的内存使用信息的方法构造。
MemoryUsage对象包含四个值:
init表示Java虚拟机在启动过程中从操作系统请求用于内存管理的初始内存量(以字节为单位)。
used表示当前使用的内存量(以字节为单位)。
已提交表示可以保证可供Java虚拟机使用的内存量(以字节为单位)。 提交的内存量可能会随时间变化(增加或减少)。
max表示可用于内存管理的最大内存量(以字节为单位)。 它的值可能是不确定的。 如果定义了最大内存量,则可能会随时间变化。
如果定义了max,则已使用和已提交的内存量将始终小于或等于max。
如果内存分配尝试增加已使用的内存,以使used>已提交,即使使用的<= max仍然为真(例如,当系统虚拟内存不足时),则内存分配可能会失败。
查看此链接以了解与内存相关的各种API。
看看这个关于堆和非堆内存类型及其内部的SE问题。
我没有找到有关CollUsed
任何信息,我怀疑问题中的类型错误。 我怀疑如果我没有记错的话,可能是committed
内存。
请仔细检查一次确切的API。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.