Я пытаюсь экспортировать часть большой базы данных для настройки тестирования для приложения. Я использую DBUnit для экспорта, и у меня возникает проблема с тем, что программа экспортирует часть данных, а затем несколько минут спустя.Ошибка кучи с DBUnit
Редактировать: Забыл упомянуть, что я увеличил размер памяти только для того, чтобы превышение предельных значений на GC превысило ошибку. Этот вопрос больше, чтобы увидеть, есть ли более эффективный или лучший способ сделать это.
public static void main(String[] args) throws Exception {
// database connection
Class driverClass = Class.forName("org.postgresql.Driver");
Properties props = new Properties();
props.setProperty("user", "someUserName");
props.setProperty("password", "Not giving you the password");
Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://host:port/name", props);
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
DatabaseConfig config = connection.getConfig();
config.setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN, "\"?\"");
config.setProperty(DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY, new ForwardOnlyResultSetTableFactory());
// partial database export
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("//I add a bunch of tables here.");
FlatXmlDataSet.write(partialDataSet, new FileOutputStream("partial.xml"));
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2436)
at java.lang.Class.getDeclaredField(Class.java:1946)
at java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl.<init>(AtomicReferenceFieldUpdater.java:212)
at java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(AtomicReferenceFieldUpdater.java:95)
at java.sql.SQLException.<clinit>(SQLException.java:371)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1861)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:283)
at org.dbunit.database.AbstractResultSetTable.<init>(AbstractResultSetTable.java:83)
at org.dbunit.database.AbstractResultSetTable.<init>(AbstractResultSetTable.java:63)
at org.dbunit.database.ForwardOnlyResultSetTable.<init>(ForwardOnlyResultSetTable.java:65)
at org.dbunit.database.ForwardOnlyResultSetTableFactory.createTable(ForwardOnlyResultSetTableFactory.java:54)
at org.dbunit.database.AbstractDatabaseConnection.createQueryTable(AbstractDatabaseConnection.java:90)
at org.dbunit.database.AbstractDatabaseConnection.createTable(AbstractDatabaseConnection.java:135)
at org.dbunit.database.QueryTableIterator.getTable(QueryTableIterator.java:143)
at org.dbunit.dataset.stream.DataSetProducerAdapter.produce(DataSetProducerAdapter.java:83)
at org.dbunit.dataset.xml.FlatXmlWriter.write(FlatXmlWriter.java:124)
at org.dbunit.dataset.xml.FlatXmlDataSet.write(FlatXmlDataSet.java:378)
at org.foo.bar.DatabaseExport.main(DatabaseExport.java:63)
Существует много информации о том, как увеличить avialable память в Java. – ControlAltDel