OpenJDK / jdk9 / jdk9 / hotspot
changeset 12495:b552b596203f
8170860: Get rid of the humanReadableByteCount() method in openjdk/hotspot
Reviewed-by: mgerdin, mchernov
author | dfazunen |
---|---|
date | Thu, 22 Dec 2016 10:17:18 +0000 |
parents | 6c9ce2c9e650 |
children | adac66a3f770 |
files | test/gc/g1/TestHumongousShrinkHeap.java test/gc/g1/TestShrinkDefragmentedHeap.java test/gc/parallel/TestDynShrinkHeap.java test/gc/testlibrary/Helpers.java |
diffstat | 4 files changed, 41 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- a/test/gc/g1/TestHumongousShrinkHeap.java Wed Dec 21 17:27:25 2016 +0000 +++ b/test/gc/g1/TestHumongousShrinkHeap.java Thu Dec 22 10:17:18 2016 +0000 @@ -27,7 +27,7 @@ * @requires vm.gc.G1 * @summary Verify that heap shrinks after GC in the presence of fragmentation * due to humongous objects - * @library /test/lib + * @library /test/lib / * @modules java.base/jdk.internal.misc * @modules java.management/sun.management * @run main/othervm -XX:-ExplicitGCInvokesConcurrent -XX:MinHeapFreeRatio=10 @@ -40,6 +40,8 @@ import java.lang.management.MemoryUsage; import java.util.ArrayList; import java.util.List; +import java.text.NumberFormat; +import gc.testlibrary.Helpers; import static jdk.test.lib.Asserts.*; public class TestHumongousShrinkHeap { @@ -70,9 +72,9 @@ System.out.format("Running with %s initial heap size of %s maximum heap size. " + "Will allocate humongous object of %s size %d times.%n", - MemoryUsagePrinter.humanReadableByteCount(TOTAL_MEMORY, false), - MemoryUsagePrinter.humanReadableByteCount(MAX_MEMORY, false), - MemoryUsagePrinter.humanReadableByteCount(HUMON_SIZE, false), + MemoryUsagePrinter.NF.format(TOTAL_MEMORY), + MemoryUsagePrinter.NF.format(MAX_MEMORY), + MemoryUsagePrinter.NF.format(HUMON_SIZE), HUMON_COUNT ); new TestHumongousShrinkHeap().test(); @@ -134,24 +136,16 @@ */ class MemoryUsagePrinter { - public static String humanReadableByteCount(long bytes, boolean si) { - int unit = si ? 1000 : 1024; - if (bytes < unit) { - return bytes + " B"; - } - int exp = (int) (Math.log(bytes) / Math.log(unit)); - String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i"); - return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre); - } + public static final NumberFormat NF = Helpers.numberFormatter(); public static void printMemoryUsage(String label) { MemoryUsage memusage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); float freeratio = 1f - (float) memusage.getUsed() / memusage.getCommitted(); System.out.format("[%-24s] init: %-7s, used: %-7s, comm: %-7s, freeRatio ~= %.1f%%%n", label, - humanReadableByteCount(memusage.getInit(), false), - humanReadableByteCount(memusage.getUsed(), false), - humanReadableByteCount(memusage.getCommitted(), false), + NF.format(memusage.getInit()), + NF.format(memusage.getUsed()), + NF.format(memusage.getCommitted()), freeratio * 100 ); }
--- a/test/gc/g1/TestShrinkDefragmentedHeap.java Wed Dec 21 17:27:25 2016 +0000 +++ b/test/gc/g1/TestShrinkDefragmentedHeap.java Thu Dec 22 10:17:18 2016 +0000 @@ -31,7 +31,7 @@ * "..................................H" * 3. invoke gc and check that memory returned to the system (amount of committed memory got down) * - * @library /test/lib + * @library /test/lib / * @modules java.base/jdk.internal.misc * java.management/sun.management */ @@ -39,10 +39,12 @@ import java.lang.management.MemoryUsage; import java.util.ArrayList; import java.util.List; +import java.text.NumberFormat; import static jdk.test.lib.Asserts.*; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; import com.sun.management.HotSpotDiagnosticMXBean; +import gc.testlibrary.Helpers; public class TestShrinkDefragmentedHeap { // Since we store all the small objects, they become old and old regions are also allocated at the bottom of the heap @@ -114,8 +116,8 @@ private void allocate() { System.out.format("Will allocate objects of small size = %s and humongous size = %s", - MemoryUsagePrinter.humanReadableByteCount(SMALL_OBJS_SIZE, false), - MemoryUsagePrinter.humanReadableByteCount(HUMONG_OBJS_SIZE, false) + MemoryUsagePrinter.NF.format(SMALL_OBJS_SIZE), + MemoryUsagePrinter.NF.format(HUMONG_OBJS_SIZE) ); for (int i = 0; i < ALLOCATE_COUNT; i++) { @@ -170,24 +172,16 @@ */ static class MemoryUsagePrinter { - public static String humanReadableByteCount(long bytes, boolean si) { - int unit = si ? 1000 : 1024; - if (bytes < unit) { - return bytes + " B"; - } - int exp = (int) (Math.log(bytes) / Math.log(unit)); - String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i"); - return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre); - } + public static final NumberFormat NF = Helpers.numberFormatter(); public static void printMemoryUsage(String label) { MemoryUsage memusage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); float freeratio = 1f - (float) memusage.getUsed() / memusage.getCommitted(); System.out.format("[%-24s] init: %-7s, used: %-7s, comm: %-7s, freeRatio ~= %.1f%%%n", label, - humanReadableByteCount(memusage.getInit(), false), - humanReadableByteCount(memusage.getUsed(), false), - humanReadableByteCount(memusage.getCommitted(), false), + NF.format(memusage.getInit()), + NF.format(memusage.getUsed()), + NF.format(memusage.getCommitted()), freeratio * 100 ); }
--- a/test/gc/parallel/TestDynShrinkHeap.java Wed Dec 21 17:27:25 2016 +0000 +++ b/test/gc/parallel/TestDynShrinkHeap.java Thu Dec 22 10:17:18 2016 +0000 @@ -28,15 +28,17 @@ * @summary Verify that the heap shrinks after full GC according to the current values of the Min/MaxHeapFreeRatio flags * @modules java.base/jdk.internal.misc * @modules jdk.management - * @library /test/lib + * @library /test/lib / * @run main/othervm -XX:+UseAdaptiveSizePolicyWithSystemGC -XX:+UseParallelGC -XX:MinHeapFreeRatio=0 -XX:MaxHeapFreeRatio=100 -Xmx1g -verbose:gc TestDynShrinkHeap */ import jdk.test.lib.DynamicVMOption; import java.lang.management.ManagementFactory; import java.lang.management.MemoryUsage; import java.util.ArrayList; +import java.text.NumberFormat; import static jdk.test.lib.Asserts.assertLessThan; import com.sun.management.HotSpotDiagnosticMXBean; +import gc.testlibrary.Helpers; public class TestDynShrinkHeap { @@ -101,24 +103,16 @@ */ class MemoryUsagePrinter { - public static String humanReadableByteCount(long bytes, boolean si) { - int unit = si ? 1000 : 1024; - if (bytes < unit) { - return bytes + " B"; - } - int exp = (int) (Math.log(bytes) / Math.log(unit)); - String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i"); - return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre); - } + public static final NumberFormat NF = Helpers.numberFormatter(); public static void printMemoryUsage(String label) { MemoryUsage memusage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage(); float freeratio = 1f - (float) memusage.getUsed() / memusage.getCommitted(); System.out.format("[%-24s] init: %-7s, used: %-7s, comm: %-7s, freeRatio ~= %.1f%%%n", label, - humanReadableByteCount(memusage.getInit(), true), - humanReadableByteCount(memusage.getUsed(), true), - humanReadableByteCount(memusage.getCommitted(), true), + NF.format(memusage.getInit()), + NF.format(memusage.getUsed()), + NF.format(memusage.getCommitted()), freeratio * 100 ); }
--- a/test/gc/testlibrary/Helpers.java Wed Dec 21 17:27:25 2016 +0000 +++ b/test/gc/testlibrary/Helpers.java Thu Dec 22 10:17:18 2016 +0000 @@ -31,6 +31,9 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.text.NumberFormat; public class Helpers { @@ -320,4 +323,16 @@ } } + /** + * @return a number formatter instance which prints numbers in a human + * readable form, like 9_223_372_036_854_775_807. + */ + public static NumberFormat numberFormatter() { + DecimalFormat df = new DecimalFormat(); + DecimalFormatSymbols dfs = df.getDecimalFormatSymbols(); + dfs.setGroupingSeparator('_'); + dfs.setDecimalSeparator('.'); + df.setDecimalFormatSymbols(dfs); + return df; + } }