Liquibase generateChangeLog失败:Java堆空间

Liquibase generateChangeLog失败:Java堆空间,java,heap-memory,liquibase,Java,Heap Memory,Liquibase,当我试图从DB2数据库生成SQL数据时,我遇到了Java堆空间问题。大约有25个表,约有1000条记录 我使用以下脚本生成变更集数据: C:\liquibase-3.0.2-bin>liquibase --driver=com.ibm.db2.jcc.DB2Driver \ --classpath="C:\db2jcc.jar" \ --changeLogFile="C:\Liquibase Release\liqui_MYDB_MYSCHEMA_Data.xml" \ --url="jd

当我试图从DB2数据库生成SQL数据时,我遇到了Java堆空间问题。大约有25个表,约有1000条记录

我使用以下脚本生成变更集数据:

C:\liquibase-3.0.2-bin>liquibase --driver=com.ibm.db2.jcc.DB2Driver \
--classpath="C:\db2jcc.jar" \
--changeLogFile="C:\Liquibase Release\liqui_MYDB_MYSCHEMA_Data.xml" \
--url="jdbc:db2://__ip__here__:9008/MYDB" \
--username="user" \
--password="12345" \
--defaultSchemaName="MYSCHEMA" \
--diffTypes=data  \
generateChangeLog
我试图通过在liquibase.bat文件中设置JAVA_OPTS来增加内存,但这并没有产生任何解决方案:

  • set JAVA_OPTS=“-XX:MaxPermSize=1024m”
  • set JAVA_OPTS=“-Xms512m-Xmx1024m”

您不应该运行MaxPermSize,因此只需设置更大的Xmx标志即可

添加所需的
--dataOutputDirectory=DIR\u标志也可能会有所帮助。这将导致Liquibase以CSV文件的形式输出数据,这将减少创建的内存密集度。生成的XML+CSV通常也比一个巨大的XML文件更易于管理

比如:

C:\liquibase-3.0.2-bin>liquibase \ 
--driver=com.ibm.db2.jcc.DB2Driver \ 
--classpat h="C:\db2jcc.jar" \ 
--changeLogFile="C:\Liquibase Release\liqui_MYDB_MYSCHEMA_Data.xml" \ 
--url="jdbc:db2://__ip__here__:9008/MYDB" \ 
--username="user" \ 
--password="12345" \ 
--defaultSchemaName="MYSCHEMA" \ 
--diffTypes=data \ 
--dataOutputDirectory=C:\Liquibase Release\liqui_MYDB_MYSCHEMA_Data.out \ 
generateChangeLog

我也遇到了同样的问题,但是有了一个更大的数据库,这是一个完美的解决方案,changelog在几秒钟内就生成了