diff --git a/src/main/java/org/jpy/PyObject.java b/src/main/java/org/jpy/PyObject.java index 44f0740..13f36a1 100644 --- a/src/main/java/org/jpy/PyObject.java +++ b/src/main/java/org/jpy/PyObject.java @@ -42,8 +42,6 @@ public class PyObject implements AutoCloseable { private static final AtomicReference CLEANUP_THREAD = new AtomicReference<>(); - private static final boolean CLEANUP_ON_INIT = Boolean.parseBoolean(System.getProperty("PyObject.cleanup_on_init", "true")); - private static final boolean CLEANUP_ON_THREAD = Boolean.parseBoolean(System.getProperty("PyObject.cleanup_on_thread", "true")); private static void startCleanupThread() { @@ -71,9 +69,6 @@ public static int cleanup() { PyObject(long pointer, boolean fromJNI) { state = new PyObjectState(pointer); if (fromJNI) { - if (CLEANUP_ON_INIT) { - REFERENCES.threadSafeCleanup(); // only performs *one* cleanup - } if (CLEANUP_ON_THREAD) { // ensures that we've only started after python has been started, and we know there is something to cleanup startCleanupThread(); diff --git a/src/main/java/org/jpy/PyObjectReferences.java b/src/main/java/org/jpy/PyObjectReferences.java index 4afea8a..c5cd2b8 100644 --- a/src/main/java/org/jpy/PyObjectReferences.java +++ b/src/main/java/org/jpy/PyObjectReferences.java @@ -76,11 +76,7 @@ private Reference asRef(PyObject pyObject) { /** * This should *only* be invoked through the proxy, or when we *know* we have the GIL. */ - public int threadSafeCleanup() { - return threadSafeCleanup(buffer); - } - - private int threadSafeCleanup(long[] buffer) { + public synchronized int threadSafeCleanup() { return PyLib.ensureGil(() -> { int index = 0; while (index < buffer.length) {