在Mysql中合并LONGBLOB对象时java编程中的堆内存

在Mysql中合并LONGBLOB对象时java编程中的堆内存,java,mysql,hibernate,Java,Mysql,Hibernate,堆栈是: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space at org.hibernate.type.ByteArrayBlobType.deepCopy(ByteArrayBlobType.java:76) at org.hibernate.type.ByteArrayBlobType.replace(ByteArrayBlobType.java:189)

堆栈是:

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    at org.hibernate.type.ByteArrayBlobType.deepCopy(ByteArrayBlobType.java:76)
    at org.hibernate.type.ByteArrayBlobType.replace(ByteArrayBlobType.java:189)
    at org.hibernate.type.AbstractType.replace(AbstractType.java:177)
    at org.hibernate.type.TypeFactory.replace(TypeFactory.java:538)
    at org.hibernate.event.def.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:429)
    at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:231)
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170)
    at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:714)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:696)
    at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:268)
    at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:291)
    at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:239)
    at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
    at org.hibernate.engine.Cascade.cascade(Cascade.java:153)
    at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:454)
    at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:230)
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170)
    at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:714)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:696)
    at org.hibernate.engine.CascadingAction$6.cascade(CascadingAction.java:268)
    at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:291)
    at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:239)
    at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
    at org.hibernate.engine.Cascade.cascade(Cascade.java:153)
    at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:454)
    at org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:230)
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:170)
    at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:81)
    at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:704)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:688)
    at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:692)
    at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:228)
要编写大量代码来描述该问题有点困难,但我将尝试解释我所拥有的:

我有一个对象
A
,在对象
B
上有一个
外键
,实际上是一个
xml
文件,它以
LONGBlob
的形式保存在
Mysql
数据库中

因此,当我尝试
合并
(通过
休眠
)对象
A
时,就会出现错误

我尝试在
eclipse
上更改
JVM
的内存参数,如下所示:

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms256m
-Xmx1024m

我希望我已经解释了我的问题

您似乎已经调整了Eclipse JVM内存设置(您正在编辑Eclipse.ini文件),而不是您的应用程序。您应该在Eclipse运行配置视图中增加Java应用程序的堆大小


,您也应该考虑消耗高内存资源的懒惰加载实体(在这种情况下是B)。< /p>是在运行在Eclipjava上的Java应用程序上运行在Tomcat容器中还是仅应用java应用程序的应用程序?