On Thu, 12 Oct 2023 15:51:28 GMT, Alexander Scherbatiy <alex...@openjdk.org> wrote:
> Each time `CUPSPrinter.initMedia()` method is called it creates new > `CustomMediaSizeName` objects which are all collected in static > `CustomMediaSizeName.customEnumTable` field. A lot of created duplicated > `CustomMediaSizeName` objects wastes java heap space and can lead to > `PrintService.getAttributes()` method call time degradation especially when a > lot of different printers are installed in the operation system. > The same is true for `CustomMediaTray` class. > > The fix adds a `create()` method and a hash map which allows to reuse created > `CustomMediaSizeName/CustomMediaTray` objects. It seems that adding > `equals(...)` method to `CustomMediaSizeName/CustomMediaTray` classes > violates parent `Media` class contract which compares media objects only by > `value` fields. The fix adds inner classes which are used as a key in > corresponding hash maps. > > `test/jdk/javax/print` and `test/jdk/java/awt/print` automated tests were run > to check the fix on Linux and macOS. What should be done with this pull request as the https://github.com/openjdk/jdk/pull/16752 `8320365: IPPPrintService.getAttributes() causes blanket re-initialisation` has been integrated? ------------- PR Comment: https://git.openjdk.org/jdk/pull/16167#issuecomment-1851752946