Add some debug information to a OutOfMemory exception.

This commit is contained in:
Kristian S. Stangeland 2013-02-09 16:50:42 +01:00
parent dd3cd6c768
commit 02d0a9afd5

View File

@ -25,6 +25,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.reflect.StructureModifier; import com.comphenix.protocol.reflect.StructureModifier;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import com.google.common.primitives.Primitives; import com.google.common.primitives.Primitives;
@ -206,6 +207,11 @@ public final class StructureCompiler {
return (StructureModifier<TField>) compiledClass.getConstructor( return (StructureModifier<TField>) compiledClass.getConstructor(
StructureModifier.class, StructureCompiler.class). StructureModifier.class, StructureCompiler.class).
newInstance(source, this); newInstance(source, this);
} catch (OutOfMemoryError e) {
// Print the number of generated classes by the current instances
ProtocolLibrary.getErrorReporter().reportWarning(
this, "May have generated too many classes (count: " + compiledCache.size() + ")");
throw e;
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
throw new IllegalStateException("Used invalid parameters in instance creation", e); throw new IllegalStateException("Used invalid parameters in instance creation", e);
} catch (SecurityException e) { } catch (SecurityException e) {
@ -218,7 +224,7 @@ public final class StructureCompiler {
throw new RuntimeException("Error occured while instancing generated class.", e); throw new RuntimeException("Error occured while instancing generated class.", e);
} catch (NoSuchMethodException e) { } catch (NoSuchMethodException e) {
throw new IllegalStateException("Cannot happen.", e); throw new IllegalStateException("Cannot happen.", e);
} }
} }
/** /**