diff --git a/prism/src/prism/Prism.java b/prism/src/prism/Prism.java index 76d958f0..03a8e273 100644 --- a/prism/src/prism/Prism.java +++ b/prism/src/prism/Prism.java @@ -1292,6 +1292,8 @@ public class Prism extends PrismComponent implements PrismSettingsListener mainLog.print("Hostname: " + h + "\n"); } catch (java.net.UnknownHostException e) { } + mainLog.print("Memory limits: cudd=" + getCUDDMaxMem()); + mainLog.println(", java=" + PrismUtils.convertBytesToMemoryString(Runtime.getRuntime().maxMemory())); // initialise cudd/jdd long cuddMaxMem = PrismUtils.convertMemoryStringtoKB(getCUDDMaxMem()); diff --git a/prism/src/prism/PrismUtils.java b/prism/src/prism/PrismUtils.java index ea3d9993..e9ed9360 100644 --- a/prism/src/prism/PrismUtils.java +++ b/prism/src/prism/PrismUtils.java @@ -317,6 +317,25 @@ public class PrismUtils throw new PrismException("Invalid amount of memory \"" + mem + "\""); } } + + /** + * Convert a number of bytes to a string representing the amount of memory (e.g. 125k, 50m, 4g). + */ + public static String convertBytesToMemoryString(long bytes) throws PrismException + { + String units[] = { "b", "k", "m", "g" }; + for (int i = 3; i > 0; i--) { + long pow = 1 << (i * 10); + if (bytes >= pow) { + return (bytes % pow == 0 ? (bytes / pow) : String.format("%.1f", ((double) bytes) / pow)) + units[i]; + } + } + return bytes + units[0]; + + /*for (String s : new String[] { "1g", "1500m", "2g", "1000m", "1024m", "1" }) { + System.out.println(s + " => " + PrismUtils.convertMemoryStringtoKB(s) * 1024 + " => " + PrismUtils.convertBytesToMemoryString(PrismUtils.convertMemoryStringtoKB(s) * 1024)); + }*/ + } } //------------------------------------------------------------------------------