簡體   English   中英

如何設置JVM進程將嘗試分配的最大內存量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM