public static void main(String[] args) throws InterruptedException { Thread pmm = new Thread(new PeakMemoryMonitor()); pmm.start(); long time = System.currentTimeMillis(); MemoryMonitor mm = new MemoryMonitor(); long time2 = System.currentTimeMillis(); System.out.println("Created MemoryMonitor. Took " + (time2 - time) + " milliseconds."); System.out.println(mm); time = System.currentTimeMillis(); mm.pollVMstat(true); time2 = System.currentTimeMillis(); System.out.println("Second Poll. Took " + (time2 - time) + " milliseconds."); System.out.println(mm); pmm.interrupt(); pmm.join(); } }
public double evaluate(double[] x) { StringBuilder sb = new StringBuilder("Memory Usage: "); sb.append(" used(KB):").append(memMonitor.getUsedMemory(false)); sb.append(" maxAvailable(KB):").append(memMonitor.getMaxAvailableMemory(false)); sb.append(" max(KB):").append(memMonitor.getMaxMemory()); String memString = sb.toString(); log.info(memString); return 0; } }
public boolean systemIsSwapping() { return (getSystemSwapsPerSec() > MAX_SWAPS); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("lastPoll:").append(lastPoll); sb.append(" pollEvery:").append(pollEvery); sb.append(" freeMem:").append(freeMem); sb.append(" usedSwap:").append(usedSwap); sb.append(" swaps:").append(swaps); sb.append(" maxAvailable:").append(getMaxAvailableMemory(false)); sb.append(" used:").append(getUsedMemory(false)); return sb.toString(); }
public double getSystemSwapsPerSec() { pollVMstat(false); return swaps; }
public void pollVMstat(boolean force) { if (!force) { long time = System.currentTimeMillis(); if (time - lastPoll < pollEvery) { return; } } Process p = null; int[] lines = { 4, 4, 4, 4 }; int[] positions = { 3, 4, 7, 8 }; try { p = r.exec("vmstat 1 2"); p.waitFor(); long time = System.currentTimeMillis(); BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream())); ArrayList<String> l = parseFields(bri, " ", lines, positions); usedSwap = Integer.parseInt(l.get(0)); freeMem = Integer.parseInt(l.get(1)); swaps = Integer.parseInt(l.get(2)) + Integer.parseInt(l.get(3)); lastPoll = time; } catch (Exception e) { e.printStackTrace(); } finally { if (p != null) { p.destroy(); } } }
public MemoryEvaluator() { memMonitor = new MemoryMonitor(); }
public int getUsedMemory() { return getUsedMemory(false); }
public int getMaxAvailableMemory() { return getMaxAvailableMemory(false); }
public int getSystemUsedSwap() { pollVMstat(false); return usedSwap; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("lastPoll:").append(lastPoll); sb.append(" pollEvery:").append(pollEvery); sb.append(" freeMem:").append(freeMem); sb.append(" usedSwap:").append(usedSwap); sb.append(" swaps:").append(swaps); sb.append(" maxAvailable:").append(getMaxAvailableMemory(false)); sb.append(" used:").append(getUsedMemory(false)); return sb.toString(); }
public void pollFree(boolean force) { if (!force) { long time = System.currentTimeMillis(); if (time - lastPoll < pollEvery) { return; } } Process p = null; int[] freeLines = { 2, 4 }; int[] freePositions = { 4, 3 }; lastPoll = System.currentTimeMillis(); try { p = r.exec("free"); p.waitFor(); BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream())); ArrayList<String> l = parseFields(bri, " ", freeLines, freePositions); freeMem = Integer.parseInt(l.get(1)); usedSwap = Integer.parseInt(l.get(2)); } catch (Exception e) { log.info(e); } finally { if (p != null) { p.destroy(); } } }
public MemoryEvaluator() { memMonitor = new MemoryMonitor(); }
public int getUsedMemory() { return getUsedMemory(false); }
public int getMaxAvailableMemory() { return getMaxAvailableMemory(false); }
public double evaluate(double[] x) { StringBuilder sb = new StringBuilder("Memory Usage: "); sb.append(" used(KB):").append(memMonitor.getUsedMemory(false)); sb.append(" maxAvailable(KB):").append(memMonitor.getMaxAvailableMemory(false)); sb.append(" max(KB):").append(memMonitor.getMaxMemory()); String memString = sb.toString(); System.err.println(memString); return 0; } }
public MemoryMonitor(long millis) { lastPoll = 0; pollEvery = millis; freeMem = 0; usedSwap = 0; swaps = 0; r = Runtime.getRuntime(); pollVMstat(true); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("lastPoll:").append(lastPoll); sb.append(" pollEvery:").append(pollEvery); sb.append(" freeMem:").append(freeMem); sb.append(" usedSwap:").append(usedSwap); sb.append(" swaps:").append(swaps); sb.append(" maxAvailable:").append(getMaxAvailableMemory(false)); sb.append(" used:").append(getUsedMemory(false)); return sb.toString(); }
public static void main(String[] args) throws InterruptedException { Thread pmm = new Thread(new PeakMemoryMonitor()); pmm.start(); long time = System.currentTimeMillis(); MemoryMonitor mm = new MemoryMonitor(); long time2 = System.currentTimeMillis(); System.out.println("Created MemoryMonitor. Took " + (time2 - time) + " milliseconds."); System.out.println(mm); time = System.currentTimeMillis(); mm.pollVMstat(true); time2 = System.currentTimeMillis(); System.out.println("Second Poll. Took " + (time2 - time) + " milliseconds."); System.out.println(mm); pmm.interrupt(); pmm.join(); } }
public void pollFree(boolean force) { if (!force) { long time = System.currentTimeMillis(); if (time - lastPoll < pollEvery) { return; } } Process p = null; int[] freeLines = { 2, 4 }; int[] freePositions = { 4, 3 }; lastPoll = System.currentTimeMillis(); try { p = r.exec("free"); p.waitFor(); BufferedReader bri = new BufferedReader(new InputStreamReader(p.getInputStream())); ArrayList<String> l = parseFields(bri, " ", freeLines, freePositions); freeMem = Integer.parseInt(l.get(1)); usedSwap = Integer.parseInt(l.get(2)); } catch (Exception e) { System.err.println(e); } finally { if (p != null) { p.destroy(); } } }