/** * Calls garbage collector and wait. * * @throws Exception if any thread has interrupted the current thread while waiting. */ private void gc() throws Exception { Runtime rt = Runtime.getRuntime(); long freeMem0 = rt.freeMemory(); long freeMem = Long.MAX_VALUE; int cnt = 0; while (freeMem0 < freeMem && cnt < GC_CALL_CNT) { System.gc(); U.sleep(WAIT_TIME); cnt++; freeMem = freeMem0; freeMem0 = rt.freeMemory(); } }
/** * Checks if address can be reached using one argument InetAddress.isReachable() version or ping * command if failed. * * @param addr Address to check. * @param reachTimeout Timeout for the check. * @return {@code True} if address is reachable. */ public static boolean reachableByPing(InetAddress addr, int reachTimeout) { try { if (addr.isReachable(reachTimeout)) return true; String cmd = String.format("ping -%s 1 %s", U.isWindows() ? "n" : "c", addr.getHostAddress()); Process myProc = Runtime.getRuntime().exec(cmd); myProc.waitFor(); return myProc.exitValue() == 0; } catch (IOException ignore) { return false; } catch (InterruptedException ignored) { Thread.currentThread().interrupt(); return false; } }