package org.springframework.beans; import java.beans.Introspector; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.junit.Ignore; import org.junit.Test; /** * @author scottb * @since Aug 16, 2012 */ public class ReproTests { @Test public void failsUnderGCPressure() throws Exception { // final Class<?> c = MyBean.class; final Class<?> c = Vehicle.class; Introspector.flushCaches(); Introspector.getBeanInfo(c); while (true) { //System.out.println("test"); new ExtendedBeanInfo(Introspector.getBeanInfo(c)); //CachedIntrospectionResults.forClass(c); //System.out.println("allocate"); allocate(); } } @Test public void failsImmediately() throws Exception { final Class<?> c = Vehicle.class; Introspector.flushCaches(); new ExtendedBeanInfo(Introspector.getBeanInfo(c)); } @Test public void failsUnderJava7() throws Exception { for (int i = 0 ; i < 1000 ; i++) { Introspector.flushCaches(); BeanUtils.getPropertyDescriptors(BigDecimal.class); } } private final List<String> data = new ArrayList<String>(); private final Random rand = new Random(); private void allocate() { for (int i = 0; i < 10000; i++) { data.add(Integer.toString(rand.nextInt())); } } }