jvm内存管理

一、JVM堆内存的划分
分为年轻代和年老代。年轻代又分为三部分:一个eden,两个survivor。
工作过程是这样的:e区空间满了后,执行minor gc,存活下来的对象放入s0, 对s0仍会进行minor gc,存活下来的的对象放入s1中,对s1同样执行minor gc,依旧存活的对象就放入年老代中;
年老代满了之后会执行major gc,这个是stop the word模式,执行major gc时所有线程都要等待,对应用可能会有影响,如果频繁进行major gc的话,有可能会出现应用超时的情况;
-xms:初始堆内存大小       -xmx:最大堆内存大小
二、持久代
持久代(perm gen)不属于堆内存,执行的是full gc,full gc对应用的影响也较大
-xx:PermSize=持久代初始内存大小       -xx:MaxPermSize=最大持久代内存大小
三、栈内存
与堆内存不同,栈内存主要存放的是临时的变量、引用对象,遵循LIFO原则
四、监控
jstat -gc pid time     time指打印时间间隔
结果参数中:
s0c,s1c指2个s区空间大小
s0u,s1u指2个s区当前使用量
ec,eu指e区空间大小和当前使用量
oc,ou指年老代空间大小和当前使用量
pc,pu指持久代空间大小和当前使用量
ygc,ygct指年轻代gc次数和花费的时间
fgc,fgct指full gc次数和花费时间
gct指gc花费的总时间[align=left]
[/align]

你可能感兴趣的:(jvm)