简体   繁体   中英

Java Heap Space Issue while running Junits

I have been working on upgrading an application from Spring 3 to 4 and Hibernate 3 to 4. Exact version now: Spring : 4.1.9 Hibernate: 4.3.7

Due to dependencies I am also having to upgrade the Junit version and we are using 4.12 now.

Since the upgrade I am getting a java heap space exception for most of the unit tests:

net.sf.ehcache.CacheException: java.lang.OutOfMemoryError: Java heap space
    at net.sf.ehcache.CacheManager.init(CacheManager.java:361)
    at net.sf.ehcache.CacheManager.<init>(CacheManager.java:237)
    at net.sf.ehcache.CacheManager.create(CacheManager.java:856)
    at net.sf.ehcache.CacheManager.create(CacheManager.java:743)
    at net.sf.ehcache.CacheManager.getInstance(CacheManager.java:758)
    at com.rsa.csd.RsaBaseTestCase.setUp(RsaBaseTestCase.java:144)
    at junit.framework.TestCase.runBare(TestCase.java:139)
    at junit.framework.TestResult$1.protect(TestResult.java:122)
    at junit.framework.TestResult.runProtected(TestResult.java:142)
    at junit.framework.TestResult.run(TestResult.java:125)
    at junit.framework.TestCase.run(TestCase.java:129)
    at junit.framework.TestSuite.runTest(TestSuite.java:252)
    at junit.framework.TestSuite.run(TestSuite.java:247)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:234)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:133)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:114)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:188)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:166)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:86)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:101)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at net.sf.ehcache.store.chm.ConcurrentHashMap$HashEntry.newArray(ConcurrentHashMap.java:226)
    at net.sf.ehcache.store.chm.ConcurrentHashMap$Segment.<init>(ConcurrentHashMap.java:316)
    at net.sf.ehcache.store.chm.SelectableConcurrentHashMap$MemoryStoreSegment.<init>(SelectableConcurrentHashMap.java:270)
    at net.sf.ehcache.store.chm.SelectableConcurrentHashMap$MemoryStoreSegment.<init>(SelectableConcurrentHashMap.java:262)
    at net.sf.ehcache.store.chm.SelectableConcurrentHashMap.createSegment(SelectableConcurrentHashMap.java:245)
    at net.sf.ehcache.store.chm.ConcurrentHashMap.<init>(ConcurrentHashMap.java:634)
    at net.sf.ehcache.store.chm.SelectableConcurrentHashMap.<init>(SelectableConcurrentHashMap.java:52)
    at net.sf.ehcache.store.MemoryStore.<init>(MemoryStore.java:146)
    at net.sf.ehcache.store.NotifyingMemoryStore.<init>(NotifyingMemoryStore.java:37)
    at net.sf.ehcache.store.NotifyingMemoryStore.create(NotifyingMemoryStore.java:49)
    at net.sf.ehcache.store.MemoryOnlyStore.create(MemoryOnlyStore.java:69)
    at net.sf.ehcache.Cache.initialise(Cache.java:1105)
    at net.sf.ehcache.CacheManager.initializeEhcache(CacheManager.java:1128)
    at net.sf.ehcache.CacheManager.addCacheNoCheck(CacheManager.java:1159)
    at net.sf.ehcache.CacheManager.addConfiguredCaches(CacheManager.java:708)
    at net.sf.ehcache.CacheManager.doInit(CacheManager.java:426)
    at net.sf.ehcache.CacheManager.init(CacheManager.java:352)
    at net.sf.ehcache.CacheManager.<init>(CacheManager.java:237)
    at net.sf.ehcache.CacheManager.create(CacheManager.java:856)
    at net.sf.ehcache.CacheManager.create(CacheManager.java:743)
    at net.sf.ehcache.CacheManager.getInstance(CacheManager.java:758)
    at com.rsa.csd.RsaBaseTestCase.setUp(RsaBaseTestCase.java:144)
    at junit.framework.TestCase.runBare(TestCase.java:139)
    at junit.framework.TestResult$1.protect(TestResult.java:122)
    at junit.framework.TestResult.runProtected(TestResult.java:142)
    at junit.framework.TestResult.run(TestResult.java:125)
    at junit.framework.TestCase.run(TestCase.java:129)
    at junit.framework.TestSuite.runTest(TestSuite.java:252)
    at junit.framework.TestSuite.run(TestSuite.java:247)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:234)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:133)

I have tried searching online but havent been able to find any solution.

Please let me know whatever config files I need to post.

You go to the run configurations and then under arguments, you can set the vm arguments . Within the arguments tab set VM arguments to "-Xms64m -Xmx256m" or higher depends on your system configuration.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM