Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Java 8u40 vs Java8u31

863d59e8-16f8-454d-b5c1-b920c10743aaAug 29 2017 — edited Aug 29 2017

Hello! I hope someone here can help me with this problem, i have nowhere else to turn

Problematic setup:

I have a big Java Swing application that needs to use custom SWING controls. One of those custom controls is a JScollPane that contains vertical "Column" custom controls (10 of them). Each "Column" control has about 1000 rows displaying different data. Trust me, application affected by my problem is not trivial, there are reasons why i'm not using JTable, i just don't want to dilute the topic.

All in all, my application needs to show total of about 60k Swing controls, mostly JLabels (some of the labels have HTML-formatted text content).

Trust me, this GUI is fine with some older Java versions! no problems whatsoever!

Symptoms:

Initially, application was built using JDK 7u70 and was run by JRE7. Entire problematic subsystem used only about 300 MB of RAM (1GB is max allowed as per VM arguments). Everything was smooth.

Recently, i decided to switch to Java 8. Application is now built using JDK 8u121 and that's when the problems started.

If i run my application using JRE 8u31 or less, everything works smoothly. Controls are being created and populated (using SwingWorker), everything is nice and fast. If i try running the same code using Java 8u40 or newer (even beta 155 has the same problem!) applications starts laying my controls, and after few seconds (after about 30-50% of controls shown) application blocks. CPU usage goes to 100% and i have to kill my application.

Note that RAM consumption is not growing beyond 250MB during that "CPU trashing".

What i tried:

- Building app using JDK 7 and running it with JRE 7 - works

- Building app using JDK 7 and running it using JRE 8u31 or less - works

- Building app using JDK 7 and running it using JRE 8u40 or newer - not working

- Checking release notes of JRE 8u40 to see if there's apparent difference which could cause problems - nothing found

- Checking Google - no luck

- Asking StackOverflow - nobody knows what could case this.

- Removing HTML text formatting from some of the labels - helped in a sense that instead of 3 seconds, app blocks after 5 seconds.

- Using VM args to turn off 3D rendering (although i don't use 3D in my app) - no luck.

- Increased -Mmx parameter to give more RAM - no luck.

Please tell me if you have any idea

P.S.

Thank you all, hopefully, this is the right sub-forum for this question. If note, please tell me.

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 26 2017
Added on Aug 29 2017
1 comment
474 views