Java程序占用的內存可能會大於Xmx


  很多人認為Xmx和-Xms參數指定的就是Java程序將會占用的內存,但是這實際上只是Java堆對象將會占用的內存。堆只是影響Java程序占用內存數量的一個因素。

  除了堆,影響Java程序所占用內存的因素還包括:棧、永生代、JVM本身、NIO中的DirectBuffer等。

 

  假設Xmx為1024m,MaxPermSize為256m,Xss為512k,有100個線程。考慮到socket緩沖區、JNI等,一般大約是jvm內存的5%左右。

  則Java程序占用的最大內存可能為:1024m + 256m + 100*512k + (0.05 * 1330m) = 1396.5m

 

     DirectBuffer占用的空間是不包含在JVM的空間中的,如果使用了DirectBuffer,除了JVM還需要監控DirectBuffer占用的空間大小,為操作系統留下足夠的內存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM