public OkHttpClient closeableOKHTTP() { log.info("Making OkHttpClient"); ConnectionPool pool = new ConnectionPool(5, 10, TimeUnit.MINUTES); OkHttpClient client = new OkHttpClient.Builder() // .connectTimeout(3, TimeUnit.MINUTES) // .followRedirects(true) // .readTimeout(3, TimeUnit.MINUTES) // .retryOnConnectionFailure(false) // .writeTimeout(3, TimeUnit.MINUTES). // connectionPool(pool) // .build(); return client; }
public void destroy() { if (daemonExecutor != null && daemonExecutor instanceof ThreadPoolExecutor) { ThreadPoolExecutor tpe = (ThreadPoolExecutor) daemonExecutor; tpe.shutdown(); } if (okHttpClient != null) { ConnectionPool connectionPool = okHttpClient.connectionPool(); connectionPool.evictAll(); log.info("OKHTTP connections iddle: {}, all: {}", connectionPool.idleConnectionCount(), connectionPool.connectionCount()); ExecutorService executorService = okHttpClient.dispatcher().executorService(); executorService.shutdown(); try { executorService.awaitTermination(3, TimeUnit.MINUTES); log.info("OKHTTP ExecutorService closed."); } catch (InterruptedException e) { log.warn("InterruptedException on destroy()", e); } } } public static final String API = "http://api.fixer.io/";
参考:https://github.com/CatPlanet/okhttpMemoryLeak/blob/2a17473e1a3e7dd3a7a96aebf3649fbefb8e5fc2/src/eu/kaguya/service/BasicService.java