package org.rioproject.test.memory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; /** * Creates an out of memory exception */ public class OutOfMemoryServiceImpl implements OutOfMemory { public static final int MB = 1048576; public final Object[] holder = new Object[MB]; static Logger logger = LoggerFactory.getLogger(OutOfMemoryServiceImpl.class); public void createOOME() { try { new Thread(new Runnable() { public void run() { MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); int count = 0; for (; count < holder.length; count++) { holder[count] = new byte[MB]; try { float used = memoryBean.getHeapMemoryUsage().getUsed(); float max = memoryBean.getHeapMemoryUsage().getMax(); float pctUsed = (used / max)*100; if(count % 100 == 0) logger.info("Percent Heap Memory Used: {}", pctUsed); Thread.sleep(100); } catch (InterruptedException e) { logger.error("Oops", e); } } } }).start(); } catch(Throwable t) { t.printStackTrace(); } logger.info("Started memory creation thread."); } }