jvm对大对象分配内存的特殊处理
? ? 前段日子在和leader交流技术的时候,偶然听到jvm在分配内存空间给大对象时,如果young区空间不足会直接在old区切一块过去。对于这个结论很好奇,也比较怀疑,所以就上网搜了下,发现还真有这么回事。以下给出具体代码来说明:
首先定义好jvm内存各个区域的大小。我设定的是eden区8M,from和to各1M,old区10M,总共20M的空间,参数如下:
? ? 到这里结束了么?当然没有:)这个是一个大的完整的对象,当大对象本身是由一连串的小对象组成的时候,会不会不再OOM呢?于是改了代码再次尝试:
4 楼 magicyang919 2012-08-31 牛xx人啊 5 楼 w156445045 2012-08-31 看不懂写的啥~ 6 楼 songbin0201 2012-08-31 嗯,学习了,一次不错的尝试和总结过程 7 楼 bhdweb 2012-08-31 博主请问是怎么看到这些的
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 18.04 90.00 23.08 0 0.000 20 0.027 0.027
我也想去试试。。可不知道怎么看 8 楼 lection.yu 2012-08-31 高人。jvm了解到深入许多。不过我是从来遇到过一次创建这么大对象的场景 9 楼 liuzhaodong89 2012-08-31 bhdweb 写道博主请问是怎么看到这些的
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 18.04 90.00 23.08 0 0.000 20 0.027 0.027
我也想去试试。。可不知道怎么看
用jstat命令,这个是jvm自带的命令,可以到网上google一下用法的 10 楼 337240552 2012-09-10 想不通怎么这么多人踩呢。。。。期待踩的人写出更好的