/** * Copyright (C) 2009-2013 Barchart, Inc. <http://www.barchart.com/> * * All rights reserved. Licensed under the OSI BSD License. * * http://www.opensource.org/licenses/bsd-license.php */ package bench.finalize; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; import com.barchart.udt.ExceptionUDT; import com.barchart.udt.SocketUDT; import com.barchart.udt.TypeUDT; public class BenchFinalize extends SocketUDT { public BenchFinalize(final TypeUDT type) throws ExceptionUDT { super(type); } static final BlockingQueue<SocketUDT> queue = new LinkedBlockingQueue<SocketUDT>(); static final ExecutorService service = Executors.newSingleThreadExecutor(); static final Runnable task = new Runnable() { @Override public void run() { while (true) { try { final SocketUDT socket = queue.take(); // socket.close(); } catch (final Exception e) { e.printStackTrace(); } } } }; public static void main(final String[] args) throws Exception { final Logger logBack = (Logger) log; logBack.setLevel(Level.INFO); log.info("started"); service.execute(task); long count = 0; while (true) { final SocketUDT socket = new SocketUDT(TypeUDT.STREAM); queue.put(socket); // socket.close(); // socket = null; if (count % 100000 == 0) { final Runtime runtime = Runtime.getRuntime(); runtime.gc(); Thread.sleep(100); final long totalMemory = runtime.totalMemory(); final long freeMemory = runtime.freeMemory(); final double ratio = (double) freeMemory / (double) totalMemory; log.info("total={} free={} count={} free/total={}", totalMemory, freeMemory, count, ratio); } count++; } } }