[KARAF-5632] This closes #464
diff --git a/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/HeapDumpProvider.java b/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/HeapDumpProvider.java
index 03c50cf..cf1ed40 100644
--- a/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/HeapDumpProvider.java
+++ b/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/HeapDumpProvider.java
@@ -52,10 +52,7 @@
             File heapDumpFile = new File("heapdump.txt");
             in = new FileInputStream(heapDumpFile);
             out = destination.add("heapdump.txt");
-            byte[] buffer = new byte[2048];
-            while ((in.read(buffer) != -1)) {
-                out.write(buffer);
-            }
+            LogDumpProvider.copy(in, out);
             // remove the original dump
             if (heapDumpFile.exists()) {
                 heapDumpFile.delete();
diff --git a/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/LogDumpProvider.java b/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/LogDumpProvider.java
index ba5a24e..740cc2e 100644
--- a/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/LogDumpProvider.java
+++ b/diagnostic/core/src/main/java/org/apache/karaf/diagnostic/core/internal/LogDumpProvider.java
@@ -87,7 +87,7 @@
      * @param outputStream Destination stream.

      * @throws IOException When IO operation fails.

      */

-    private void copy(InputStream inputStream, OutputStream outputStream) throws IOException {

+    static void copy(InputStream inputStream, OutputStream outputStream) throws IOException {

         byte[] buffer = new byte[4096];

         int n = 0;

         while (-1 != (n = inputStream.read(buffer))) {