Blob reading causing memory leak?
aidan_b5 Dec 7, 2006 11:23 AMI have three entity beans; one Audit contains many AuditImage, one AuditImage contains one AuditLargeImage .
Audit to AuditImage is eagerly loaded, AuditImage to AuditLargeImage is lazily loaded.
I can sucessfully upload images to the database (MySQL) but when I load (manager.find) the Audit, the servers memory usage jumps to over 1GB! Despite total image size being only 5mb
@Entity(name = "Audit") public class Audit { private Set<AuditImage> image; @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER) public Set<AuditImage> getImages() { if (image == null) image = new HashSet<AuditImage>(); return image; } public void setImages(Set<AuditImage> image) { this.image = image; } } }
@Entity @Table(name = "auditimage") public class AuditImage { private int id; @Id @GeneratedValue(strategy = GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } private String imageName; private byte[] imageThumb; private AuditLargeImage imageLarge; @Lob @Column(columnDefinition = "BLOB") public byte[] getImageThumb() { return imageThumb; } public void setImageThumb(byte[] imageThumb) { this.imageThumb = imageThumb; } public String getImageName() { return imageName; } public void setImageName(String imageName) { this.imageName = imageName; } @OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) public AuditLargeImage getImageLarge() { return imageLarge; } public void setImageLarge(AuditLargeImage imageLarge) { this.imageLarge = imageLarge; } }
@Entity public class AuditLargeImage { private int id; @Id @GeneratedValue(strategy = GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } private byte[] imageFull; @Lob @Column(columnDefinition = "MEDIUMBLOB") public byte[] getImageFull() { return imageFull; } public void setImageFull(byte[] imageFull) { this.imageFull = imageFull; } }
Am currently using JBOSS 4.05 GA, Hibernate 3.2.1 with the latest mysql jdbc connector (5.0.4).
Even if I remove all references to AuditLargeImage (as in disregard it from the test) I still have the same problem...
Your comments appreciated. Thanks