【问题标题】:Liquibase generateChangeLog Failed: Java heap spaceLiquibase generateChangeLog 失败:Java 堆空间
【发布时间】:2013-09-10 22:55:20
【问题描述】:

当我尝试从 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"

【问题讨论】:

    标签: java heap-memory liquibase


    【解决方案1】:

    您不应该遇到 MaxPermSize,因此只需设置一个更大的 Xmx 标志就足够了。

    添加--dataOutputDirectory=DIR_YOU_WANT 标志也可能会有所帮助。这将导致 Liquibase 以 CSV 文件的形式输出数据,这将减少 mmemory 密集型的创建。生成的 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
    

    【讨论】:

    • 我遇到了同样的问题,但数据库更大,这是完美的解决方案,几秒钟内就生成了更改日志
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多