/** * Gets the CPU dump string. * * @param runtime The runtime * @param mainClass The main class * @param arguments The arguments * @return The CPU dump string */ protected String getCpuDumpString(String runtime, String mainClass, String arguments) { // get date and time Date currentDate = new Date(); String date = new SimpleDateFormat("yyyy/MM/dd").format(currentDate); // $NON-NLS-1$ String time = new SimpleDateFormat("HH:mm:ss").format(currentDate); // $NON-NLS-1$ StringBuffer buffer = new StringBuffer(); buffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); // $NON-NLS-1$ buffer.append("<?JvmMonitor version=\""); // $NON-NLS-1$ buffer.append(AGENT_VERSION); buffer.append("\"?>\n"); // $NON-NLS-1$ buffer .append("<cpu-profile date=\"") .append(date) .append(' ') // $NON-NLS-1$ .append(time) .append("\" "); // $NON-NLS-1$ buffer.append("runtime=\"").append(runtime).append("\" "); // $NON-NLS-1$ //$NON-NLS-2$ buffer.append("mainClass=\"").append(mainClass).append("\" "); // $NON-NLS-1$ //$NON-NLS-2$ buffer.append("arguments=\"").append(arguments).append("\">\n"); // $NON-NLS-1$ //$NON-NLS-2$ for (ThreadNode<CallTreeNode> node : callTreeThreads) { buffer .append("\t<thread name=\"") .append(node.getName()) .append("\">\n"); // $NON-NLS-1$ //$NON-NLS-2$ for (CallTreeNode frameNode : node.getChildren()) { frameNode.dump(buffer, 2); } buffer.append("\t</thread>\n"); // $NON-NLS-1$ } buffer.append("</cpu-profile>"); // $NON-NLS-1$ return buffer.toString(); }