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%