public void flush() throws SQLException { synchronized (database) { database.checkPowerOff(); ObjectArray list = cache.getAllChanged(); CacheObject.sort(list); for (int i = 0; i < list.size(); i++) { Record rec = (Record) list.get(i); writeBack(rec); } for (int i = 0; i < fileBlockCount; i++) { i = deleted.nextSetBit(i); if (i < 0) { break; } if (deleted.get(i)) { writeDirectDeleted(i, 1); deleted.clear(i); } } } }