private void write(DataOutputStream out) throws IOException, SnapshotException { Stack<Integer> stack = new Stack<Integer>(); stack.add(-1); while (!stack.isEmpty()) { int objectId = stack.pop(); int[] objectIds = snapshot.getImmediateDominatedIds(objectId); long[] addresses = new long[objectIds.length]; for (int i = 0; i < objectIds.length; i++) addresses[i] = snapshot.mapIdToAddress(objectIds[i]); ArrayUtils.sortDesc(addresses, objectIds); for (int i = 0; i < addresses.length; i++) out.writeLong(addresses[i]); addresses = null; for (int i = objectIds.length - 1; i >= 0; i--) stack.add(objectIds[i]); } }