mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-12-28 11:39:07 +00:00
No leaky
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
|
||||
package com.volmit.iris.util.context;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.core.project.loader.IrisData;
|
||||
import com.volmit.iris.engine.IrisComplex;
|
||||
import com.volmit.iris.engine.framework.Engine;
|
||||
@@ -30,7 +31,7 @@ import lombok.Data;
|
||||
@AllArgsConstructor
|
||||
public class IrisContext {
|
||||
private static ChronoLatch cl = new ChronoLatch(60000);
|
||||
private static KMap<Thread, IrisContext> context = new KMap<>();
|
||||
private static final KMap<Thread, IrisContext> context = new KMap<>();
|
||||
private final Engine engine;
|
||||
|
||||
public static IrisContext get() {
|
||||
@@ -42,10 +43,22 @@ public class IrisContext {
|
||||
context.put(Thread.currentThread(), c);
|
||||
|
||||
if (cl.flip()) {
|
||||
for (Thread i : context.k()) {
|
||||
if (!i.isAlive()) {
|
||||
context.remove(i);
|
||||
dereference();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void dereference() {
|
||||
synchronized (context)
|
||||
{
|
||||
for (Thread i : context.k()) {
|
||||
if (!i.isAlive() || context.get(i).engine.isClosed()) {
|
||||
if(context.get(i).engine.isClosed())
|
||||
{
|
||||
Iris.debug("Dereferenced Context<Engine> " + i.getName() + " " + i.getId());
|
||||
}
|
||||
|
||||
context.remove(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ package com.volmit.iris.util.parallel;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.core.IrisSettings;
|
||||
import com.volmit.iris.core.service.ExecutionSVC;
|
||||
import com.volmit.iris.core.service.PreservationSVC;
|
||||
import com.volmit.iris.util.io.InstanceState;
|
||||
import com.volmit.iris.util.math.M;
|
||||
import com.volmit.iris.util.scheduling.J;
|
||||
@@ -71,7 +71,7 @@ public class MultiBurst {
|
||||
};
|
||||
heartbeat.setName(name + " Monitor");
|
||||
heartbeat.start();
|
||||
Iris.service(ExecutionSVC.class).register(this);
|
||||
Iris.service(PreservationSVC.class).register(this);
|
||||
}
|
||||
|
||||
private synchronized ExecutorService getService() {
|
||||
@@ -90,7 +90,7 @@ public class MultiBurst {
|
||||
|
||||
return t;
|
||||
});
|
||||
Iris.service(ExecutionSVC.class).register(service);
|
||||
Iris.service(PreservationSVC.class).register(service);
|
||||
Iris.debug("Started MultiBurst Pool " + name + " with " + tc + " threads at " + priority + " priority.");
|
||||
}
|
||||
|
||||
|
||||
@@ -19,14 +19,12 @@
|
||||
package com.volmit.iris.util.scheduling;
|
||||
|
||||
import com.volmit.iris.Iris;
|
||||
import com.volmit.iris.core.service.ExecutionSVC;
|
||||
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import com.volmit.iris.core.service.PreservationSVC;
|
||||
|
||||
public abstract class Looper extends Thread {
|
||||
@SuppressWarnings("BusyWait")
|
||||
public void run() {
|
||||
Iris.service(ExecutionSVC.class).register(this);
|
||||
Iris.service(PreservationSVC.class).register(this);
|
||||
while (!interrupted()) {
|
||||
try {
|
||||
long m = loop();
|
||||
|
||||
Reference in New Issue
Block a user