|
From: <fd...@us...> - 2009-08-15 16:35:57
|
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.
|