【问题标题】:AbstractTransactionalJUnit4SpringContextTestsAbstractTransactionalJUnit4SpringContextTests
【发布时间】:2011-08-08 00:53:34
【问题描述】:

我使用AbstractTransactionalJUnit4SpringContextTests 作为我的测试类的超类。

但是“mvn test”内存不足。

这是一个 sn-p 我的 BaseTest 类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations=
    {"classpath:**/applicationContext.xml",
     "classpath:**/simple-test-datasource.xml"})
@TransactionConfiguration(
     transactionManager="myService.transactionManager",defaultRollback=true)
public class ServiceBaseTest extends AbstractTransactionalJUnit4SpringContextTests{

----

}

我是否缺少 @Before @After@BeforeClass @AfterClass 之类的东西,这使得这些测试非常繁重,因此我的内存不足?

请帮忙!

谢谢!

这是堆栈跟踪:

java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at com.apple.crypto.provider.Apple.doSelfVerification(Apple.java:271)
at com.apple.crypto.provider.Apple.verifySelfIntegrity(Apple.java:192)
at com.apple.crypto.provider.HmacCore.<init>(HmacCore.java:45)
at com.apple.crypto.provider.HmacSHA1.<init>(HmacSHA1.java:30)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Provider$Service.newInstance(Provider.java:1221)
at javax.crypto.Mac.a(DashoA13*..)
at javax.crypto.Mac.init(DashoA13*..)
at org.springframework.security.oauth.common.signature.HMAC_SHA1SignatureMethod.verify(HMAC_SHA1SignatureMethod.java:122)
at org.springframework.security.oauth.provider.OAuthProviderProcessingFilter.validateSignature(OAuthProviderProcessingFilter.java:261)
at org.springframework.security.oauth.provider.OAuthProviderProcessingFilter.doFilter(OAuthProviderProcessingFilter.java:146)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.oauth.provider.OAuthProviderProcessingFilter.doFilter(OAuthProviderProcessingFilter.java:193)
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)

【问题讨论】:

    标签: hibernate spring testing maven junit


    【解决方案1】:

    您似乎正在通过 ContextConfiguration 注释将整个 Spring 应用程序上下文加载到内存中。这可能会占用大量内存,具体取决于您定义的 bean。

    尝试通过在您的环境中设置 M2_OPTS=-Xmx256m 来增加 JVM 的可用内存。

    【讨论】:

    • 你能发布你得到的堆栈跟踪吗?
    • -Xms512m -Xmx1024m -XX:MaxPermSize=512m 即使这对我也不起作用。仍然内存不足。
    • 您能否发布您获得的堆栈跟踪,其中包含内存不足异常?
    • @artbristol- 我已经在问题中添加了堆栈。
    • 我怀疑这些选项没有传递给 JVM。使用 jconsole 检查正在运行的 Java 进程并查看 PermGen 空间 - 特别是检查您指定的最大值为 512m。
    【解决方案2】:

    堆栈跟踪是关于 perm gen 内存而不是堆。所以请尝试增加每代内存,例如 -XX:MaxPermSize=1024M

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 2013-04-05
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      相关资源
      最近更新 更多