java内存管理和GC原理学习

java内存分为堆内存,永久存储区(方法区)内存,栈内存(虚拟机栈,程序计数器,本地方法栈)等。
堆内存分为新生代,老生代,新生代分为eden区,survivor0,survivor1区,堆内存由XX:Xmx,XX:Xms设置。新生代内存由XX:Xmn设置或者XX:NewSize;XX:MaxNewSize设置。
永久存储区用来存储class类,常量等信息,由XX:PermSize或者XX:MaxPermSize设置。
栈内存是每个线程都有一个栈,栈大小是有XX:Xss设置的,相等条件下xss越小,生成的线程数量就越多。
GC分为yong gc 和full gc,young gc是将对象在新生代内存移动并且移到老生代,full gc将回收新生代和老生代的对象。
设置JVM参数如下:
<jvm-arg>-Xmx2048M</jvm-arg>
<jvm-arg>-Xms2048M</jvm-arg>
<jvm-arg>-XX:NewSize=800M</jvm-arg>
<jvm-arg>-XX:MaxNewSize=800M</jvm-arg>
<jvm-arg>-XX:+PrintGCDateStamps</jvm-arg>
<jvm-arg>-XX:+PrintHeapAtGC</jvm-arg>
<jvm-arg>-XX:+PrintGCDetails</jvm-arg>
<jvm-arg>-loggc:/home/work/gamesdk/gamesdk_log/online/gc.log</jvm-arg>

<jvm-arg>-Xss512k</jvm-arg>
<jvm-arg>-XX:+UseCMSInitiatingOccupancyOnly</jvm-arg>
<jvm-arg>-XX:CMSInitiatingOccupancyFraction=70</jvm-arg>
<jvm-arg>-XX:+UseConcMarkSweepGC</jvm-arg>
<jvm-arg>-XX:+UseCMSCompactAtFullCollection</jvm-arg>
<jvm-arg>-XX:+CMSParallelRemarkEnabled</jvm-arg>
<jvm-arg>-XX:+DisableExplicitGC</jvm-arg>
<jvm-arg>-Xnoclassgc</jvm-arg>
<jvm-arg>-Duser.dir=/home/work/gamesdk</jvm-arg>

GC日志会生成如下格式,含义如下:
[GC 488.096(时间戳): [ParNew(新生代内存回收): 672269K(新生代原内存)->16513K(回收后内存)(737280K(总内存大小,不包含suivivor2)), 0.0350340(回收时间) secs] 1370470K(堆区回收前内存)->714812K(堆区回收后内存)(2015232K(堆区总内存,不包含suvivor2区)), 0.0365730(回收时间) secs] [Times: user=0.10(young gc用户耗时) sys=0.01(young gc系统耗时), real=0.03 secs(GC实际耗时)]

参考文章:
[url]http://blog.csdn.net/huangzhaoyang2009/article/details/11860757[/url]
[url]http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html[/url]
[url]http://www.ibm.com/developerworks/cn/java/j-lo-jvm-perf/[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值