disruptor测试

对于disruptor 我也做了个测试 不知道这样做对不对 请大侠们指点一下
private static final int ENTRIES = 1024*8;

private static final ExecutorService executorService;
//private static final Disruptor<SimpleEvent> disruptor;
//private static final RingBuffer<SimpleEvent> ringBuffer;

static {
//普通的的多线程设计
executorService = new ThreadPoolExecutor(2, 2, 5L,TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3000000),new java.util.concurrent.ThreadPoolExecutor.AbortPolicy());

//disruptor 多线程设计
/*executorService = new ThreadPoolExecutor(2, 2, 5L,TimeUnit.SECONDS, new SynchronousQueue<Runnable>());
// executorService = Executors.newFixedThreadPool(100);
WaitStrategy waitStrategy = new SleepingWaitStrategy();
ClaimStrategy claimStrategy = new MultiThreadedClaimStrategy(ENTRIES);

disruptor = new Disruptor<SimpleEvent>(SimpleEvent.EVENT_FACTORY,executorService,claimStrategy,waitStrategy);

SimpleEventHandler forwardHandler = new SimpleEventHandler();
// OutputHandler outputHandler = new OutputHandler();
disruptor.handleEventsWith(forwardHandler);
disruptor.handleExceptionsFor(forwardHandler).with(new IgnoreExceptionHandler());
// disruptor.after(forwardHandler).handleEventsWith(outputHandler);
ringBuffer = disruptor.getRingBuffer();

disruptor.start();*/
}


/**
* @param args
*/
public static void main(String[] args) {
int i=0;

long starttime=System.currentTimeMillis();
for(i=0;i<3000000;i++){
/*long sequence = ringBuffer.next();
long start = System.currentTimeMillis();
SimpleEvent event= ringBuffer.get(sequence);
event.setValue(i);
ringBuffer.publish(sequence);*/
如果是disruptor则打开上面的的注释,否则打开下面的内容
try{
executorService.execute(new SingleThreadTest(i));
}catch(java.util.concurrent.RejectedExecutionException e){
System.out.println("结束了:因为抛出异常了,处理被拒绝了"+i);
break;
}
这个的循环就是判断如果调用完所有线程 则打印时间 测试的结果是 disruptor 6000000次的循环没问题 大约40秒左右执行完毕 而普通的多线程300万就挂了 内存溢出了
if(i==2999999){
System.out.println("public time:"+ (System.currentTimeMillis() - starttime)+"---------"+i);
break;
}
}
}

还有的就是每次加载的多线程 都执行一万次的循环
int j=0;
while(j<10000){
j++;
}
disruptor就是handler中执行一万次

如果线程里的循环次数减少的话,1000左右,普通的多线程也能正常执行,测试的结果就是说随着处理的业务逻辑的增加,disruptor的性能还是很稳定的,但是普通的多线程就无法承受了
请大侠们指点,因为对于这个测试 我一直也没有具体的测试的方法 谢谢大家