Java内存和垃圾回收无废话手册

培训的时候,涉及到了jvm的内存结构,觉得自己有必要在这方面深入。今天花了3个小时看了看相关的内容。

本文转自

http://www.spnguru.com/2010/08/java%E5%86%85%E5%AD%98%E5%92%8C%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%97%A0%E5%BA%9F%E8%AF%9D%E6%89%8B%E5%86%8C-2/

概念

Java的堆内存分为三部分

  • 新生代(New Generation) – 新创建的对象(又分为S0,S1和Eden)
  • 旧生代 (Old Generation) – 经过多次垃圾回收没有被回收的对象或者大对象
  • 持久代 (Permanent Generation) – JVM使用的内存,包含类信息等

Java的垃圾回收分为两种

  • Minor GC

    回收新生代中的对象,代价低,速度快

  • Full GC(公司内部邮件中的full gc的意思就是这个概念,不能太多,因为full gc会造成耗时厂,会产生应用程序暂停这个很不爽的地方)

    回收旧生代和持久代中的对象,代价高,速度慢

配置

通过指定Java命令行参数可以改变内存和垃圾回收的行为。最常见的有

-Xmx1024m: 指定最大的堆大小为1024m

-Xms1024m: 指定初始化堆大小为1024m,设为跟最大的堆大小,可避免JVM动态调整

-XX:NewRatio=3: 指定新生代和旧生代的比例为1:3,比例越大,新生代越小,Minor GC调用越频繁,Full GC调用越不频繁。

-verbose:gc : 在控制台打印GC信息

-XX:+PrintGCDetails:显示更详细的GC信息

-Xloggc:gc.log :输出gc LOG到文件

另外java visul VM和visual gc很重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值