[英]How to set the maximum amount of memory the JVM process will try to allocate?
我正在嘗試設置JVM進程將嘗試分配的最大字節數。 我不是在說堆,而是在操作系統級別的內存總量。 我看上去很努力,但是還沒有找到任何解決方案,我很難相信。 即使使用Java 10,它也應該能夠保持在容器內存范圍之內。
在大約9年前就已經問過這個問題(請參閱: 如何設置JVM的最大內存使用量? ),但答案不正確 。
Runtime
對象包含一個maxMemory()
方法,該方法錯誤地記錄如下:
返回Java虛擬機將嘗試使用的最大內存量。
maxMemory()
方法返回的最大堆數量而不是JVM進程可以要求的總內存量。
問題 :JVM不能對自己的內存使用量進行硬性限制嗎?
可能沒有嚴格的限制可以輕松設置,例如,Java線程堆棧,編譯的代碼和NIO緩沖區是在堆外分配的。 即使我們將-Xmx
, -Xss
, -XX:MaxMetaspaceSize
和其他選項-XX:MaxMetaspaceSize
,也總是有可能通過Java Native Interface交互的自定義本機代碼將管理它自己的內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.