Question

I am running JUnit Test.

My heap space is MAX 497M.(according to eclipse status bar)

My the other program take over 441 when it beginning. However, the test what I am trying to ran show 'out of memory'.(It only takes 304)

I do not know why and is there any check list such a situation like this?

Below is my error message:

SRCTest.testChannelsWithPrograms
testChannelsWithPrograms(com.test.svc.SRCTest)
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
    at java.lang.StringBuilder.append(StringBuilder.java:119)
    at java.lang.StringBuilder.append(StringBuilder.java:115)
    at java.util.AbstractCollection.toString(AbstractCollection.java:422)
    at java.lang.String.valueOf(String.java:2826)
    at java.lang.StringBuilder.append(StringBuilder.java:115)
    at java.util.AbstractMap.toString(AbstractMap.java:490)
    at java.lang.String.valueOf(String.java:2826)
    at java.io.PrintStream.println(PrintStream.java:771)
    at com.zinnaworks.test.svc.SRCTest.testChannelsWithPrograms(SRCTest.java:22)
    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.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    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.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)

Thanks ^^b

===============================================================================

attaching part of codes for better solution :D

public class ProgramTbody {
    public static List<Map<String, Object>> injectProgram2Channel (
            List<Map<String, Object>> channelList, List<Map<String, Object>> programList) throws Exception {

        List<Map<String, Object>> returnChannelArray = new ArrayList<Map<String,Object>>();
        for(int i = channelList.size() - 1; i >= 0; i--){
            Map<String, Object> returnElement = new HashMap<String, Object>();

            returnElement.putAll(channelList.get(i));

            String sid = returnElement.get("SID").toString();
            List<Map<String, Object>> programsForChannel = new ArrayList<Map<String,Object>>();

            for(int j = programList.size() - 1; j >= 0; j--){
                if(programList.get(j).get("SID").equals(sid)){
                    programsForChannel.add(programList.get(j));
                    programList.remove(j);
                }
            }

            returnElement.put("pros", programsForChannel);
            returnChannelArray.add(returnElement);
            channelList.remove(i);
        }
        return returnChannelArray;
    }
};
Was it helpful?

Solution

The exception indicates that the exception happened during a call of "java.io.PrintStream.println". You need to find the line where the println is happening and possibly remove it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top