java committed used_java NIO编写的应用 内存去了哪里?

1、jconsole中

当前堆大小: (实际使用)

103,645 Kb

分配的内存: (提交给操作系统的)

236,368 Kb

堆大小的最大值:

506,816 Kb

可以参考java.lang.management.MemoryUsage

引用

MemoryUsage 对象包含四个值:

init 表示 Java 虚拟机在启动期间从操作系统请求的用于内存管理的初始内存容量(以字节为单位)。Java 虚拟机可能在运行过程中从操作系统请求更多的内存,也可能将内存释放给系统。init 的值可以是不明确的。

used 表示当前已经使用的内存量(以字节为单位)。

committed 表示保证可以由 Java 虚拟机使用的内存量(以字节为单位)。已提交的内存量可以随时间而变化(增加或减少)。Java 虚拟机可能会将内存释放给系统,committed 可以小于 init。committed 将始终大于或等于 used。

max 表示可以用于内存管理的最大内存量(以字节为单位)。可以不定义其值。如果定义了该值,最大内存量可能随时间而更改。已使用的内存量和已提交的内存量将始终小于或等于 max(如果定义了 max)。如果内存分配试图增加满足以下条件的已使用内存将会失败:used > committed,即使 used <= max 仍然为 true(例如,当系统的虚拟内存不足时)。

以下是内存池的示例图:

+----------------------------------------------+

+      |         +

+      |         +

+----------------------------------------------+

|--------|

init

|---------------|

used

|---------------------------|

committed

|----------------------------------------------|

max

2、还有就是NIO中的Buffer 将文件部分或者全部映射到内存后进行读写 还有它的实现不是纯java的代码,而是本地(native)代码.它内存的分配不在Java的堆栈中,不受java内存回收的影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值