1 21 package org.jsmtpd.generic.ressourceControl; 22 23 import org.apache.commons.logging.Log; 24 import org.apache.commons.logging.LogFactory; 25 import org.jsmtpd.config.ReadConfig; 26 27 32 public class MemControler { 33 private Runtime rt; 34 private Log log = LogFactory.getLog(MemControler.class); 35 private int maxMessageSize = ReadConfig.getInstance().getMaxMessageSize(); 36 37 private MemControler() { 38 rt = Runtime.getRuntime(); 39 } 40 41 42 45 public boolean canAllocate(long messageSize) { 46 47 long curMessageSize = messageSize>0 ? messageSize : maxMessageSize; 48 49 long free = rt.freeMemory(); 50 long max = rt.maxMemory(); 51 long used = max - free; 52 53 long newUsed = used + curMessageSize * 4; 54 if (newUsed>max) 55 return false; 56 57 return true; 58 } 59 60 public void dump() { 61 long free = rt.freeMemory(); 62 long max = rt.maxMemory(); 63 long used = max - free; 64 log.debug("free memory " + (float) free / 1048576); 65 log.debug("used memory " + (float) (used) / 1048576); 66 log.debug("max memory " + (float) max / 1048576); 67 } 68 69 public long getMaxMem() { 70 return rt.maxMemory(); 71 } 72 73 public long getFreeMem() { 74 return rt.freeMemory(); 75 } 76 77 public long getUsedMem() { 78 return rt.maxMemory() - rt.freeMemory(); 79 } 80 81 } | Popular Tags |