Revision: 5645 http://jnode.svn.sourceforge.net/jnode/?rev=5645&view=rev Author: fduminy Date: 2009-08-15 16:35:50 +0000 (Sat, 15 Aug 2009)
Log Message: ----------- improvements of the onheap command : - replaced HeapStatistics#toString() by HeapStatistics#writeTo(Appendable) for better genericity - added BufferedWriter to the output stream for better performances (it's about 2 times faster with a 2Kb buffer) Modified Paths: -------------- trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java Modified: trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java =================================================================== --- trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java 2009-08-15 16:23:23 UTC (rev 5644) +++ trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java 2009-08-15 16:35:50 UTC (rev 5645) @@ -20,6 +20,7 @@ package org.jnode.command.system; +import java.io.BufferedWriter; import java.io.PrintWriter; import org.jnode.shell.AbstractCommand; @@ -69,7 +70,7 @@ stats.setMinimumTotalSize(argMinTotalSize.getValue()); } - out.println(stats.toString()); + stats.writeTo(new BufferedWriter(getOutput().getWriter(), 2048)); } } Modified: trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java =================================================================== --- trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java 2009-08-15 16:23:23 UTC (rev 5644) +++ trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java 2009-08-15 16:35:50 UTC (rev 5645) @@ -20,6 +20,8 @@ package org.jnode.vm.memmgr; +import java.io.IOException; + import org.jnode.vm.VmSystemObject; /** @@ -46,9 +48,10 @@ public abstract void setMinimumTotalSize(long bytes); /** - * Convert the statistical data to a string. - * - * @see java.lang.Object#toString() + * Write the statistical data to an {...@link Appendable}. + * + * @param a + * @throws IOException */ - public abstract String toString(); + public abstract void writeTo(Appendable a) throws IOException; } Modified: trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java =================================================================== --- trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java 2009-08-15 16:23:23 UTC (rev 5644) +++ trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java 2009-08-15 16:35:50 UTC (rev 5645) @@ -20,6 +20,7 @@ package org.jnode.vm.memmgr.def; +import java.io.IOException; import java.util.TreeMap; import org.jnode.util.NumberUtils; @@ -74,8 +75,11 @@ this.minTotalSize = bytes; } - public String toString() { - final StringBuilder sb = new StringBuilder(); + /** + * {...@inheritdoc} + * @throws IOException + */ + public void writeTo(Appendable a) throws IOException { boolean first = true; for (HeapCounter c : countData.values()) { @@ -83,15 +87,13 @@ if (first) { first = false; } else { - sb.append(newline); + a.append(newline); } - c.append(sb); + c.append(a); } } - - return sb.toString(); } - + static final class HeapCounter { private final String name; @@ -122,18 +124,19 @@ return objectSize * (long) instanceCount; } - public void append(StringBuilder sb) { - sb.append(name); - sb.append(" #"); - sb.append(instanceCount); + public void append(Appendable a) throws IOException { + a.append(name); + a.append(" #"); + a.append(Integer.toString(instanceCount)); if (objectSize != 0) { - sb.append(usage); + a.append(usage); long size = getTotalSize(); if (size >= 1024) { - sb.append(NumberUtils.size(size) + " (" + getTotalSize() + "b)"); + a.append(NumberUtils.toBinaryByte(size)).append(" ("); + a.append(Long.toString(size)).append("b)"); } else { - sb.append(size + "b"); + a.append(Long.toString(size)).append('b'); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Jnode-svn-commits mailing list Jnode-svn-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jnode-svn-commits