Java 8u40 Swing GUI性能

gue*_*t86 5 java user-interface swing

我有一个应用程序,它呈现了非常复杂的Swing GUI.GUI包含大约60,000个不同的控件(大多数是标签,更少的文本字段).基本上,它是一个表格,其中许多单元格中的每一个都包含一个独立控件,几个标签和一个文本框.

我突然遇到的问题与8u40之后(包括)的java版本有关.项目使用JDK 8u122构建.当我使用Java 8u31运行我的应用程序时,一切都运行良好和流畅.当我使用8u31之前的任何Java(JRE)运行我的应用程序时,应用程序开始渲染我的复杂控件,然后很快就会占用100%的CPU而且所有块,我必须杀死我的应用程序.

为什么?我正在检查8u40的补丁说明,但我找不到任何可能导致这么大的减速的东西.

你有什么想法吗?

gue*_*t86 1

这似乎与我正在使用的 VM 参数有关-XX:-UseAdaptiveSizePolicy

没有它,即使在较新的 Java 版本上也能正常工作。

现在,有这么多的控​​件,我需要-XX:-UseAdaptiveSizePolicy