We are seeing our hosts which generates the presentations using Aspose library are going stale(we are currently using Aspose slides for Java 17.7 version), and upon investigation our Java team said that this is due to Aspose library. Below is their response.
Full heap dump also showed very worrisome signal (screenshot). Apparently Aspose library your team uses in this app relies on finalizable objects for some reason. That is very bad design choice (Asposes’s choice, not your team’s) for Java applications, since it could easily create unmanageable bottlenecks in memory allocation and garbage collection. The problem with finalizable objects is their lifecycle. When this object becomes garbage, it could not be collected immediately, instead GC adds it to a special queue, and there is a separate single JVM thread (finalizer), which processes these objects. While it does not directly affect latency of the application, spikes of allocation of finalizable objects could easily clog memory and causes OOMs, very long GC pauses, etc.
I wonder if this is changed in the newer version of Aspose, if not is there a plan to change this so that the performance will significantly improve.