Uploaded image for project: 'ModeShape'
  1. ModeShape
  2. MODE-1201

Using InMemoryBinary when writing to a repository can cause heap/memory problems writing large files

    Details

      Description

      Using FileSystemSource:

      Inserting a large file into a repository causes the JVM to run out of memory. It seems like the whole file is loaded into memory.

      java.lang.OutOfMemoryError: Java heap space
                at java.util.Arrays.copyOf(Arrays.java:2786)
                at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)
                at org.modeshape.common.util.IoUtil.readBytes(IoUtil.java:66)
                at org.modeshape.graph.property.basic.AbstractBinaryValueFactory.create(AbstractBinaryValueFactory.java:229)
                at org.modeshape.graph.property.basic.AbstractBinaryValueFactory.create(AbstractBinaryValueFactory.java:55)
                at org.modeshape.graph.property.basic.AbstractValueFactory.create(AbstractValueFactory.java:123)
                at org.modeshape.jcr.JcrValueFactory.createBinary(JcrValueFactory.java:111)
                at org.modeshape.jcr.JcrValueFactory.createBinary(JcrValueFactory.java:45)
                at com.nextgen.core.repository.ModeShapeLargeFileInsertTest.testInsert(RespositoryTest.java:132)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                at java.lang.reflect.Method.invoke(Method.java:597)
                at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
                at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
                at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
                at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
                at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
                at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
                at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
                at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
                at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
                at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
                at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
                at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
                at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
                at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
                at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
                at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
                at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
      

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                bcarothers Brian Carothers
                Reporter:
                d95sld95 Steen Laursen
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: