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.
eclipse shows 'out of memory' while it is ok in heap status bar
-
03-07-2023 - |
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;
}
};
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow