JVM内存空间学习


Java运行时内存分配图:(出自深入理解Java虚拟机)


我们常用的主要是:
方法区:存储类信息数据、静态方法、静态量、还有常量池。
:存放对象实例。
虚拟机栈(线程私有):存储局部变量表、操作栈、动态链接、方法出口等信息。

一个普通对象在内存的存储:




栈中存储对象引用;
堆中存储对象本身;
方法区中存储对象类信息、静态方法、静态常量信息;

对于堆的详解:


新生代:MinorGC;
老生代:FullGC;
永久代:存储元数据,就是方法区;

MinorGC:新生代触发的GC,当Eden满了或者一个Survivor满了就会触发,Survivor有两个,一个总是空的,当执行MinorGC时,Eden的数据经过GC后的数据就会移入空的   Survivor,Eden清空,而原本有数据的Survivor经过GC后,也会将剩余数据移入此Survivor,又会产生一个空的Survivor,重复迭代。
新生代:分为Eden(新建的对象都在此,如果对象过大,可能直接提升到老生代)、Survivor(经过一次MinorGC,在Eden中存活的对象,提升到Survivor,如果Survivor满了,根据JVM参数设置的次数,不足即执行MinorGC,足够了则执行提升到老年代)。

FullGC:新生代GC、老生代GC、永生代GC。
老生代:存储生命周期比较长的对象,或者比较大直接进入老生代的对象,当老生代或者永生代内存满了,就会执行FullGC,FullGC对系统的效率影响较大,尽量减少FullGC次数。

GC日志的查看:

JVM参数:-server -Xms2048m -Xmx2048m -Xmn768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseParallelOldGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\\opt\\heap.bin  -Xloggc:D:\\opt\\gc.log


MinorGC:

2015-07-28T12:27:55.796+0800: 74.868: [GC [PSYoungGen: 475902K->60685K(709120K)] 475902K->60685K(2019840K), 0.0682820 secs] [Times: user=0.23 sys=0.01, real=0.07 secs] 

2015-07-28T12:27:55.796+0800: 74.868:  时间
[GC  MinorGC
[PSYoungGen:  新生代使用的垃圾收集器:Parallel Scavenge
475902K 垃圾收集前,新生代使用总量
-> 60685K 垃圾收集后,因为Eden为空,所以为Survivor占用量
(709120K)] 括号中是Eden和正在被占用的Survivor的总和,因为一个Survivor总要为空,所以此参数为新生代上限
475902K 垃圾收集前,Java堆总使用大小
->60685K 垃圾收集后,Java堆总使用大小
(2019840K), 0.0682820 secs]  Java堆大小
[Times: user=0.23 sys=0.01, real=0.07 secs]  垃圾回收所耗时间,user是非系统指令所耗CPU时间;sys执行系统命令CPU耗时;real是垃圾回收实际所耗时间


FullGC:

2015-07-28T12:27:55.864+0800: 74.936: [Full GC (System) [PSYoungGen: 60685K->0K(709120K)] [ParOldGen: 0K->60196K(1310720K)] 60685K->60196K(2019840K) [PSPermGen: 95215K->95066K(190592K)], 0.1949290 secs] [Times: user=0.55 sys=0.03, real=0.19 secs] 

2015-07-28T12:27:55.864+0800: 74.936:时间
 [Full GC (System) FullGC
[PSYoungGen: 60685K->0K(709120K)]新生代将数据提升到老生代,新生代内存使用量变化(新生代内存总量)
 [ParOldGen: 0K->60196K(1310720K)] 老生代接收到新生代提升的数据,老生代内存使用了变化(老生代总量)
60685K->60196K(2019840K) Java堆内存变化(堆内存总量,为新生代和老生代总量之和)
[PSPermGen: 95215K->95066K(190592K)], 0.1949290 secs] 永久代内存变化(永久代内存总量),耗时
[Times: user=0.55 sys=0.03, real=0.19 secs垃圾回收所耗时间








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值