sStartedZimbraStats = true;
        public void run() {            try {                if (!sStartedZimbraStats) {                    sStartedZimbraStats = true;                    // Initialize the stats file                    List<String> columns = new ArrayList<String>();                    synchronized (sAccumulators) {                        for (Accumulator a : sAccumulators) {                            for (String column : a.getNames()) {                                columns.add(column);                            }                        }                    }                    String[] columnsArray = new String[columns.size()];                    columns.toArray(columnsArray);                    sZimbraStatsFile = new StatsFile("zimbrastats", columnsArray, false);                }                                List<Object> data = new ArrayList<Object>();                for (Accumulator a : sAccumulators) {                    synchronized (a) {                        data.addAll(a.getData());                        a.reset();                    }                }                writeStats(sZimbraStatsFile, data);            } catch (Throwable t) {                if (t instanceof OutOfMemoryError) {                    throw (OutOfMemoryError) t;                }                ZimbraLog.misc.error("Accumulator error", t);            }        }