32位操做系統最大內存爲2GB,64位操做系統理論上沒有限制,java
heap:new對象和數組數組
-Xms 啓動時默認申請物理內存的1/64,但小於1GB
操作系統
-Xmx 啓動時默認申請特理內存的1/4,但小於1GB線程
默認空於heap小於40%時,heap會按要配置增長內存分配,能夠經過-XX:MinHeapFreeRatio=調節比例對象
默認heap佔用小於70%時,heap會減小內存,-XX:MaxHeapFreeRatio=調節比例內存
內存分代管理 1.2之後:io
New Generation (Eden, S0, S1) 8:1:1thread
Old(Tenuring) Generation效率
Heap = New + Old配置
java對象所佔用的內存主要從heap上進行分配,heap是全部線程共享的,所以在heap分配內存時須要進行加鎖。
爲了提高內存分配效率,分爲每一個新建立的線程在eden上分配一塊獨立的空間,這塊空間稱爲TLAB(thread local allocation buffer),默認佔1%