Java面試問題之五十四

問題:請問在Java中本地直接內存(Direct Memory)和堆內存(Java Heap)之間有何關係與區別,並嘗試分析一下直接內存有什麼作用。


答:根據Java虛擬機規範,堆內存(Heap Memory)和直接內存(Direct Memory)是Java虛擬機中兩種基本的內存空間類型。堆內存是一個標準內存池,用於存放絕大多數對象的實例;直接內存則是一塊由程序本身管理的一塊內存空間,它的效率要比標準內存池要高,主要用於存放網絡通信時數據緩衝和磁盤數據交換時的數據緩衝。

DirectMemory容量可以通過 -XX:MaxDirectMemorySize指定,如果不指定,則默認爲與Java堆的最大值(-Xmx指定)一樣。但是,在OSX上的最新版本的JVM,對直接內存的默認大小進行修訂,改爲“在不指定直接內存大小的時默認分配的直接內存大小爲64MB”,可以通過-XX:MaxMemorySize來顯示指定直接內存的大小。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章