Guiqu1aixi commented on PR #10021:
URL: https://github.com/apache/dubbo/pull/10021#issuecomment-1155924982

   > > MemoryUsage#getMax() - MemoryUsage#getUsed()即可 😄😄😄😄😄😄
   > 
   > MemoryUsage#getMax() 
表示可用于内存管理的最大内存量(以字节为单位)。它的值可能是未定义的。如果已定义,最大内存量可能会随时间变化。如果定义了max 
,则已使用和已提交的内存量将始终小于或等于max 。如果尝试增加已使用的内存,即使used <= max仍然为 
true(例如,当系统的虚拟内存不足时),内存分配可能会失败。
   > 
   > max定义的内存可能会由于系统内存不足分配失败,是不是commited - used 更妥😆😆😆😆😆
   
   
问题的起源在于剩余内存如何较为科学与准确的计算,从而引申出一系列的内存概念,一共有四个分别是:init、used、commited、max,如果jvm启动之时没有将xmx、mxs两者配置为同值,运行之时堆大小是会随着实际情况根据高低水位线进行占用内存的扩缩容,commit此时代表的是此时jvm堆内存总量,max
 - used带来的计算可能会导致内存再分配,你的担心在于硬件条件不允许。
   这个担心不无道理,事实上我在第一次跟作者交流之际原话:“当前剩余可用内存大小应该等于commited - used 或者选择 max - 
used”。但是个人依然没认为使用commited - used会更加妥善,理由如下:
   1.绝大多数使用者都会把xmx、xms配置为明确的同样大小的值;
   2.jvm  xmx参数的配置人员应该是清醒的,明确的知道当前服务需要占用的内存最大量,以及物理机器实际的承载能力;


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to