JDK-4899321 : issue Swing back buffer issue has performance impact
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 5.0
  • Priority: P2
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_2000
  • CPU: generic
  • Submitted: 2003-07-31
  • Updated: 2003-08-12
  • Resolved: 2003-08-12
Related Reports
Duplicate :  
Relates :  
In Christmas tree or stockbroker like applications
Swing back buffer issue results in performance impact.
DDRAW=false improves the performance but we would rather
not have customers use that to avoid the hitting the bug. 

###@###.### 2003-07-31

Problem is seen on multimonitor setup.

Here is data received from customer:

Pentium 4 2.8 GHz 
Windows 2000 SP2
Matrox G200 Adapter
3 Display Monitors



download a version of the btec application that plays back a recorded market from

User Name: broadway
Password: 27br0dw@y


1. Download and install brokertec_setup.exe
   (Select any directory to install this, say $INSTALL_HOME)

2. Download the data file btus-w.rec and save it on your local machine 
   (in a directory with no spaces), e.g. C:\TEMP

3. Copy the preference file performance_btec.btc into C:\Documents and 
  Settings\<NT userid>\BrokerTec\prefs. This is for Win2K. On NT, the 
  directory would be in C:\WINNT\Profiles\...

4. Copy the jar files located at the directory below to


  Do not overwrite the existing jars in jre/lib/ext. Pick only the ones
  which are not present.



1. Launch the application. On the login screen, goto "Details". Select 
"New" in the "Configure Exchange" window. From the "Selec a service" 
drop down, select "Playback". Use the "File" button to point to the data 
file, e.g. C:\TEMP\btus-w.rec. Afterward press "OK" and select the 
checkbox in the "Use" column in the "Configure Exchange" window. Press 
OK to close the window.

2. Enter any userid and password on the login screen for the "Playback" 
exchange and press "Login". The app will then start replaying the market.

3. Once the application launches, goto "File->Load Desktop". From the 
list, pick the file performance_btec.btc. 

If you don't have a multi-head screen and it looks like the app 
disappeared, that's because the app is positioned outside the visible 
screen. Right click on the taskbar icon and use "Move" to bring the app 
into view.

4. File -> Save Desktop

5. Once the application starts up, select "Window --> Float" option. This
will allow you to place individual frames in three different display monitors.

IMPORTANT: Also maximize each frame to occupy the entire workspace.

5. Once the replay is over, the "backend" simulates a disconnect.


To change the JRE to say 1.4.2 (the default version installed with the test case
is 1.4.0_01):

a) Save the existing "jre" folder under $INSTALL_HOME

b) Copy the JRE folder from 1.4.2 installation to $INSTALL_HOME

c) Copy the jar files that are located under the following directory to


d) Change the entry "btec.exe" in "BrokerTec.cfg" under $INSTALL_HOME to


The source file for this test case is located at:


File: btec-src.zip

###@###.### 2003-07-31

EVALUATION This is likely only applicable to multi-headed machines. Swing uses the same VolatileImage on all GraphicsConfiguration, which causes us to recreate the VolatileImage every time we render on the other monitor. The fix is to cache VolatileImages per GC in the RepaintManager. ###@###.### 2003-08-12 I'm closing this as a duplicate of the older bug this is against the same thing: 4895978. ###@###.### 2003-08-12