Java垃圾回收和大对象 [英] Java Garbage Collection and big objects

查看:639
本文介绍了Java垃圾回收和大对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的程序中有大约1500x500像素的栅格.每个像素均以浮点数表示.我相信这意味着1500x500x4(bytes)= 3百万个字节或3mb.他们可以比这更大. Java垃圾收集器对大对象的处理方式与对小对象的处理方式不同吗?他们会自动跳入更高的一代吗?

I have rasters in my program of approximately 1500x500 pixels. Each pixel is represented with a float. I believe that means that 1500x500x4(bytes) = 3 million bytes or 3mb. They can be bigger than this. Does the Java Garbage Collector treat big objects differently than smaller ones? Do they skip into a higher generation automatically?

推荐答案

较大的对象可以直接放置到使用权空间中.各个对象的大小很重要,例如float[1500][1500]是1500个对象,每个对象均为1500 * 4(加上开销).

Larger objects can be placed straight into tenured space. The size of the individual objects is what matters e.g. float[1500][1500] is 1500 objects which are 1500*4 (plus overhead) each.

http ://blog.dynatrace.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms/

这表明JRockit确实将大型对象放到了使用权空间中,但未对HotSpot进行任何说明.

This suggest JRockit does place large objects into tenured space but doesn't say anything about HotSpot.

这表明大型物体必须比年轻一代的空间大,才能直接进入终身空间.

This suggests large objects have to be larger than the young generation space to go directly into tenured space.

https://blogs.oracle.com/jonthecollector/entry/size_matters

这篇关于Java垃圾回收和大对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆