mirror of
https://github.com/GravitLauncher/Launcher
synced 2025-01-12 18:43:40 +03:00
47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
|
package ru.gravit.launcher.managers;
|
||
|
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Timer;
|
||
|
import java.util.TimerTask;
|
||
|
|
||
|
import ru.gravit.launcher.NeedGarbageCollection;
|
||
|
|
||
|
public class GarbageManager {
|
||
|
static class Entry {
|
||
|
NeedGarbageCollection invoke;
|
||
|
long timer;
|
||
|
|
||
|
public Entry(NeedGarbageCollection invoke, long timer) {
|
||
|
this.invoke = invoke;
|
||
|
this.timer = timer;
|
||
|
}
|
||
|
}
|
||
|
private static final Timer timer = new Timer("GarbageTimer");
|
||
|
|
||
|
private static final ArrayList<Entry> NEED_GARBARE_COLLECTION = new ArrayList<>();
|
||
|
|
||
|
public static void gc() {
|
||
|
for (Entry gc : NEED_GARBARE_COLLECTION)
|
||
|
gc.invoke.garbageCollection();
|
||
|
}
|
||
|
|
||
|
public static void registerNeedGC(NeedGarbageCollection gc) {
|
||
|
NEED_GARBARE_COLLECTION.add(new Entry(gc, 0L));
|
||
|
}
|
||
|
|
||
|
public static void registerNeedGC(NeedGarbageCollection gc, long time) {
|
||
|
TimerTask task = new TimerTask() {
|
||
|
@Override
|
||
|
public void run() {
|
||
|
gc.garbageCollection();
|
||
|
}
|
||
|
};
|
||
|
timer.schedule(task, time);
|
||
|
NEED_GARBARE_COLLECTION.add(new Entry(gc, time));
|
||
|
}
|
||
|
|
||
|
public static void unregisterNeedGC(NeedGarbageCollection gc) {
|
||
|
NEED_GARBARE_COLLECTION.removeIf(e -> e.invoke == gc);
|
||
|
}
|
||
|
}
|