nuodb / migration-tools

Migration tools for NuoDB
http://nuodb.github.com/migration-tools/
BSD 3-Clause "New" or "Revised" License
27 stars 10 forks source link

Out of Memory / GC limit errors #33

Open zedalaye opened 10 years ago

zedalaye commented 10 years ago

Hi

I'm trying to run nuodb-migrator against a 28Gb PostgreSQL database (one table is ~40M records)

It built the current master and I get the " java.lang.OutOfMemoryError: Java heap space" error but on different runs I can get another error "java.lang.OutOfMemoryError: GC overhead limit exceeded" :

pierre@azubuntu:~/Sources/nuodb-migrator/assembly/target/nuodb-migrator/bin$ ./nuodb-migrator dump \
  --source.driver=org.postgresql.Driver \
  --source.url=jdbc:postgresql:<DBNAME> \
  --source.username=<USERNAME> \
  --source.password=<PASSWORD> \
  --source.schema=public \
  --output.path=/home/pierre/data/migrator \
  --output.type=csv
Exception in thread "pool-1-thread-6" java.lang.OutOfMemoryError: Java heap space
    at java.lang.String.toCharArray(String.java:2753)
    at org.postgresql.jdbc2.TimestampUtils.loadCalendar(TimestampUtils.java:97)
    at org.postgresql.jdbc2.TimestampUtils.toTimestamp(TimestampUtils.java:333)
    at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getTimestamp(AbstractJdbc2ResultSet.java:539)
    at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:586)
    at org.apache.commons.dbcp.DelegatingResultSet.getTimestamp(DelegatingResultSet.java:586)
    at com.nuodb.migrator.jdbc.type.jdbc2.JdbcTimestampValue.getValue(JdbcTimestampValue.java:53)
    at com.nuodb.migrator.jdbc.type.jdbc2.JdbcTimestampValue.getValue(JdbcTimestampValue.java:40)
    at com.nuodb.migrator.jdbc.type.SimpleJdbcValueGetter.getValue(SimpleJdbcValueGetter.java:54)
    at com.nuodb.migrator.jdbc.type.SimpleJdbcValueAccess.getValue(SimpleJdbcValueAccess.java:89)
    at com.nuodb.migrator.backup.format.value.JdbcTimestampValueFormat.doGetValue(JdbcTimestampValueFormat.java:55)
    at com.nuodb.migrator.backup.format.value.ValueFormatBase.getValue(ValueFormatBase.java:50)
    at com.nuodb.migrator.backup.format.OutputFormatBase.write(OutputFormatBase.java:156)
    at com.nuodb.migrator.dump.DumpQueryWork.execute(DumpQueryWork.java:134)
    at com.nuodb.migrator.jdbc.session.SessionBase.execute(SessionBase.java:156)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Exception in thread "pool-1-thread-1" java.lang.OutOfMemoryError: Java heap space
05-03-2014 23:22:57 (ERROR) (com.nuodb.migrator.bootstrap.Bootstrap.main(Bootstrap.java:120)) - Execution failed
java.lang.OutOfMemoryError: Java heap space

Second try with bson output :

pierre@azubuntu:~/Sources/nuodb-migrator/assembly/target/nuodb-migrator/bin$ ./nuodb-migrator dump \
  --source.driver=org.postgresql.Driver \
  --source.url=jdbc:postgresql:<DBNAME> \
  --source.username=<USERNAME> \
  --source.password=<PASSWORD> \
  --source.schema=public \
  --output.path=/home/pierre/data/migrator \
  --output.type=bson
Exception in thread "pool-1-thread-5" java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.nio.CharBuffer.wrap(CharBuffer.java:462)
    at java.nio.CharBuffer.wrap(CharBuffer.java:483)
    at de.undercouch.bson4jackson.io.DynamicOutputBuffer.putUTF8(DynamicOutputBuffer.java:547)
    at de.undercouch.bson4jackson.io.DynamicOutputBuffer.putUTF8(DynamicOutputBuffer.java:531)
    at de.undercouch.bson4jackson.BsonGenerator._writeFieldName(BsonGenerator.java:347)
    at de.undercouch.bson4jackson.BsonGenerator._writeArrayFieldNameIfNeeded(BsonGenerator.java:328)
    at de.undercouch.bson4jackson.BsonGenerator.writeString(BsonGenerator.java:373)
    at com.nuodb.migrator.backup.format.bson.BsonOutputFormat.writeValues(BsonOutputFormat.java:115)
    at com.nuodb.migrator.backup.format.OutputFormatBase.write(OutputFormatBase.java:159)
    at com.nuodb.migrator.dump.DumpQueryWork.execute(DumpQueryWork.java:134)
    at com.nuodb.migrator.jdbc.session.SessionBase.execute(SessionBase.java:156)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Exception in thread "pool-1-thread-6" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "pool-1-thread-4" com.nuodb.migrator.utils.ReflectionException: Failed to invoke public abstract java.sql.Statement java.sql.Connection.createStatement() throws java.sql.SQLException method on object of org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper class
    at com.nuodb.migrator.utils.ReflectionUtils.newInvokeMethodException(ReflectionUtils.java:152)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:147)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:76)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.jdbc.connection.LoggingConnectionProvider$2.invoke(LoggingConnectionProvider.java:122)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.ReflectionProxy.invoke(ReflectionProxy.java:69)
    at com.sun.proxy.$Proxy0.createStatement(Unknown Source)
    at com.nuodb.migrator.jdbc.dialect.PostgreSQLDialect.setSessionTimeZone(PostgreSQLDialect.java:81)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.setSessionTimeZone(SessionObservers.java:91)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.beforeClose(SessionObservers.java:82)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.beforeClose(SessionFactoryBase.java:76)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.closeSession(SessionFactoryBase.java:81)
    at com.nuodb.migrator.jdbc.session.SessionBase.close(SessionBase.java:166)
    at com.nuodb.migrator.jdbc.JdbcUtils.close(JdbcUtils.java:90)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:170)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
    at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:822)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.createStatement(AbstractJdbc3Connection.java:229)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.createStatement(AbstractJdbc2Connection.java:294)
    at org.apache.commons.dbcp.DelegatingConnection.createStatement(DelegatingConnection.java:257)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createStatement(PoolingDataSource.java:216)
    at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:141)
    ... 20 more
Exception in thread "pool-1-thread-8" com.nuodb.migrator.utils.ReflectionException: Failed to invoke public abstract java.sql.Statement java.sql.Connection.createStatement() throws java.sql.SQLException method on object of org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper class
    at com.nuodb.migrator.utils.ReflectionUtils.newInvokeMethodException(ReflectionUtils.java:152)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:147)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:76)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.jdbc.connection.LoggingConnectionProvider$2.invoke(LoggingConnectionProvider.java:122)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.ReflectionProxy.invoke(ReflectionProxy.java:69)
    at com.sun.proxy.$Proxy0.createStatement(Unknown Source)
    at com.nuodb.migrator.jdbc.dialect.PostgreSQLDialect.setSessionTimeZone(PostgreSQLDialect.java:81)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.setSessionTimeZone(SessionObservers.java:91)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.beforeClose(SessionObservers.java:82)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.beforeClose(SessionFactoryBase.java:76)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.closeSession(SessionFactoryBase.java:81)
    at com.nuodb.migrator.jdbc.session.SessionBase.close(SessionBase.java:166)
    at com.nuodb.migrator.jdbc.JdbcUtils.close(JdbcUtils.java:90)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:170)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
    at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:822)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.createStatement(AbstractJdbc3Connection.java:229)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.createStatement(AbstractJdbc2Connection.java:294)
    at org.apache.commons.dbcp.DelegatingConnection.createStatement(DelegatingConnection.java:257)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createStatement(PoolingDataSource.java:216)
    at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:141)
    ... 20 more
Exception in thread "pool-1-thread-2" com.nuodb.migrator.utils.ReflectionException: Failed to invoke public abstract boolean java.sql.Statement.execute(java.lang.String) throws java.sql.SQLException method on object of org.apache.commons.dbcp.DelegatingStatement class
    at com.nuodb.migrator.utils.ReflectionUtils.newInvokeMethodException(ReflectionUtils.java:152)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:147)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:76)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.jdbc.connection.LoggingConnectionProvider$8.invoke(LoggingConnectionProvider.java:177)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.ReflectionProxy.invoke(ReflectionProxy.java:69)
    at com.sun.proxy.$Proxy2.execute(Unknown Source)
    at com.nuodb.migrator.jdbc.dialect.PostgreSQLDialect.setSessionTimeZone(PostgreSQLDialect.java:84)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.setSessionTimeZone(SessionObservers.java:91)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.beforeClose(SessionObservers.java:82)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.beforeClose(SessionFactoryBase.java:76)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.closeSession(SessionFactoryBase.java:81)
    at com.nuodb.migrator.jdbc.session.SessionBase.close(SessionBase.java:166)
    at com.nuodb.migrator.jdbc.JdbcUtils.close(JdbcUtils.java:90)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:170)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "pool-1-thread-1" com.nuodb.migrator.utils.ReflectionException: Failed to invoke public abstract java.sql.Statement java.sql.Connection.createStatement() throws java.sql.SQLException method on object of org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper class
    at com.nuodb.migrator.utils.ReflectionUtils.newInvokeMethodException(ReflectionUtils.java:152)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:147)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:76)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.jdbc.connection.LoggingConnectionProvider$2.invoke(LoggingConnectionProvider.java:122)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.ReflectionProxy.invoke(ReflectionProxy.java:69)
    at com.sun.proxy.$Proxy0.createStatement(Unknown Source)
    at com.nuodb.migrator.jdbc.dialect.PostgreSQLDialect.setSessionTimeZone(PostgreSQLDialect.java:81)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.setSessionTimeZone(SessionObservers.java:91)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.beforeClose(SessionObservers.java:82)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.beforeClose(SessionFactoryBase.java:76)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.closeSession(SessionFactoryBase.java:81)
    at com.nuodb.migrator.jdbc.session.SessionBase.close(SessionBase.java:166)
    at com.nuodb.migrator.jdbc.JdbcUtils.close(JdbcUtils.java:90)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:170)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
    at org.postgresql.jdbc2.AbstractJdbc2Connection.checkClosed(AbstractJdbc2Connection.java:822)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.createStatement(AbstractJdbc3Connection.java:229)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.createStatement(AbstractJdbc2Connection.java:294)
    at org.apache.commons.dbcp.DelegatingConnection.createStatement(DelegatingConnection.java:257)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createStatement(PoolingDataSource.java:216)
    at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:141)
    ... 20 more

Exception in thread "pool-1-thread-10" com.nuodb.migrator.utils.ReflectionException: Failed to invoke public abstract boolean java.sql.Statement.execute(java.lang.String) throws java.sql.SQLException method on object of org.apache.commons.dbcp.DelegatingStatement class
    at com.nuodb.migrator.utils.ReflectionUtils.newInvokeMethodException(ReflectionUtils.java:152)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:147)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:76)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.jdbc.connection.LoggingConnectionProvider$8.invoke(LoggingConnectionProvider.java:177)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.ReflectionProxy.invoke(ReflectionProxy.java:69)
    at com.sun.proxy.$Proxy2.execute(Unknown Source)
    at com.nuodb.migrator.jdbc.dialect.PostgreSQLDialect.setSessionTimeZone(PostgreSQLDialect.java:84)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.setSessionTimeZone(SessionObservers.java:91)
    at com.nuodb.migrator.jdbc.session.SessionObservers$2.beforeClose(SessionObservers.java:82)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.beforeClose(SessionFactoryBase.java:76)
    at com.nuodb.migrator.jdbc.session.SessionFactoryBase.closeSession(SessionFactoryBase.java:81)
    at com.nuodb.migrator.jdbc.session.SessionBase.close(SessionBase.java:166)
    at com.nuodb.migrator.jdbc.JdbcUtils.close(JdbcUtils.java:90)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:170)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
05-03-2014 23:29:09 (ERROR) (com.nuodb.migrator.bootstrap.Bootstrap.main(Bootstrap.java:120)) - Execution failed
com.nuodb.migrator.utils.ReflectionException: Failed to invoke public abstract java.sql.ResultSet java.sql.Statement.executeQuery(java.lang.String) throws java.sql.SQLException method on object of org.apache.commons.dbcp.DelegatingStatement class
    at com.nuodb.migrator.utils.ReflectionUtils.newInvokeMethodException(ReflectionUtils.java:152)
    at com.nuodb.migrator.utils.ReflectionUtils.invokeMethod(ReflectionUtils.java:147)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:76)
    at com.nuodb.migrator.utils.aop.MethodInterceptors$4.invoke(MethodInterceptors.java:148)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.jdbc.connection.LoggingConnectionProvider$8.invoke(LoggingConnectionProvider.java:177)
    at com.nuodb.migrator.utils.aop.ReflectionProxy$1.proceed(ReflectionProxy.java:78)
    at com.nuodb.migrator.utils.aop.ReflectionProxy.invoke(ReflectionProxy.java:69)
    at com.sun.proxy.$Proxy2.executeQuery(Unknown Source)
    at com.nuodb.migrator.jdbc.split.NoLimitQuerySplitter.executeStatement(NoLimitQuerySplitter.java:74)
    at com.nuodb.migrator.jdbc.split.QuerySplitterBase$1.getResultSet(QuerySplitterBase.java:136)
    at com.nuodb.migrator.dump.DumpQueryWork.init(DumpQueryWork.java:90)
    at com.nuodb.migrator.jdbc.session.WorkBase.init(WorkBase.java:40)
    at com.nuodb.migrator.jdbc.session.SessionBase.execute(SessionBase.java:155)
    at com.nuodb.migrator.dump.DumpWriter$1.run(DumpWriter.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded

I'm running Ubuntu x64 13.10 (up to date) and Java :

$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.13.10.1)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)