On Wed, 11 Dec 2019 15:41:38 GMT, Ambarish Rapte <ara...@openjdk.org> wrote:
> The finalize() method is deprecated in JDK9. See [Java 9 deprecated > features](https://www.oracle.com/technetwork/java/javase/9-deprecated-features-3745636.html). > And so the > [PiscesRenderer.finalize()](https://github.com/openjdk/jfx/blob/71ca899fbfc74d825c29b20a778d6d9eb243f90f/modules/javafx.graphics/src/main/java/com/sun/pisces/PiscesRenderer.java#L439) > and > [AbstractSurface.finalize()](https://github.com/openjdk/jfx/blob/71ca899fbfc74d825c29b20a778d6d9eb243f90f/modules/javafx.graphics/src/main/java/com/sun/pisces/AbstractSurface.java#L100) > method should be removed. > > The change is, > 1. Remove finalize method from PiscesRenderer and AbstractSurface classes. > 2. Use > [Disposer](https://github.com/openjdk/jfx/blob/71ca899fbfc74d825c29b20a778d6d9eb243f90f/modules/javafx.graphics/src/main/java/com/sun/prism/impl/Disposer.java#L48) > class for cleanup instead of finalize(). For SW pipeline the cleanup is > initiated in > [here](https://github.com/openjdk/jfx/blob/71ca899fbfc74d825c29b20a778d6d9eb243f90f/modules/javafx.graphics/src/main/java/com/sun/javafx/tk/quantum/UploadingPainter.java#L195) > in UploadingPainer.java. > 3. Added new JNI methods to JPiscesRenderer.c and JAbstractSurface.c and > removed the ones which were used previously with finalize() method. > > Verification: > Verified that the newly added dispose() methods get invoked as required and > no OOM occurs. > 1. Create a sample program which adds and removes non 3D shapes and/or > controls to stage in a loop. > 2. Run the program using -Dprism.order=sw, -Dprism.verbose=true. (optional > -Xmx50m) > Expected Behavior: > a. Maximum memory consumption after this change should reduce or remain same > as that of before this change. > b. No OOM should occur with this change or without this change. modules/javafx.graphics/src/main/native-prism-sw/JAbstractSurface.c line 63: > 62: } > 63: } > 64: there are no checks on memory errors as used to be in the finalize implementation. Are those not needed anymore? ------------- PR: https://git.openjdk.java.net/jfx/pull/66