package org.springframework.aop.framework;
import mockit.Mock;
import mockit.MockUp;
import net.sf.cglib.proxy.Enhancer;
/**
* 多次加载spring容器,回到classloader中的classes内存溢出<br>
* 原因是spring aop使用cglib代理是,Enhancer的cache会hold住很多spring代理类的class信息<br>
* 导致GC无法释放,最终导致OOM
*
* @author darui.wudr
*/
//@MockClass(realClass = Cglib2AopProxy.class, instantiation = Instantiation.PerMockSetup)
public class MockCglib2AopProxy extends MockUp<Cglib2AopProxy> {
@Mock
public Enhancer createEnhancer() {
Enhancer enhancer = new Enhancer();
enhancer.setUseCache(false);
return enhancer;
}
}