From 940a31b5ddf12e277df598450026de0ccc9c655a Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Fri, 3 Jul 2015 22:21:57 +0000 Subject: [PATCH] Print memory limits on startup. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10182 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/prism/Prism.java | 2 ++ prism/src/prism/PrismUtils.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) 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)); + }*/ + } } //------------------------------------------------------------------------------