直接內存
直接內存是一個重要的問題,首先它不是運行數據區的部分也不是java虛擬機規范的一部分,這個的出現主要和java1.4後出現的NIO相關,一個基於通道和緩沖區的io方式,它可以使用Native函數庫來直接分配堆外內存,然後通過一個存在java堆中的DirectByteBuffer這個對象來對這個java堆外的內存的引用來進行操作,可以提高相關性能,因為避免了java堆和native堆中的來回復制數據。
那個那麼重點來了,既然這個直接內存不歸java堆管理,但是也會受到總內存的限制,如果管理員設置課動態擴展的javajvm時,如果忽略了這個直接內存的,最後實際內存總和大於實際內存,當jvm要動態擴展內存時,就會出現這個outofmemoryerror錯誤。