Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (477)
Games in Android Showcase (107)
games submitted by our members
Games in WIP (536)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Swing's repaint has large memory overhead  (Read 871 times)
0 Members and 1 Guest are viewing this topic.
Offline K.I.L.E.R

Senior Member




Java games rock!


« Posted 2005-03-27 06:02:04 »

Basically I had normal Swing GUI, which always takes 20MB of memory, as always I wanted to reduce memory overhead.

I also decided I wanted to make my app less resource demanding by only updating it 50fps.

So I stuck it in a loop and I set "setIgnoreRepaint(true)" and only manually repainting it every 50 frames.

This yielded a substantial improvement in Swing's responsiveness(This was a surprise because to me Swing was already very responsive) and a 3MB reduction in memory, now standing at 17,100KB of memory under Window's task manager.

It's obvious what the issue is; Java2D, and not Swing, is the cause of some overhead in Swing apps.

While others have known Java2D was responsible for Swing's bad name, I never did get any numbers of how large the overhead was.

Can I assume the Java2D team already knows about this overhead?

If you want to test this, do as I've done; grab a swing app, and manually repaint it by calling myFrame.repaint() for every 50fps.
Check both times the memory it takes and note the responsiveness.

System specs:
A64 3000+, 1GB DDR400 RAM, nForce 3 mobo and a Radeon 9700 Pro 128MB card.

Vorax:
Is there a name for a "redneck" programmer?

Jeff:
Unemployed. Wink
Offline Linuxhippy

Senior Member


Medals: 1


Java games rock!


« Reply #1 - Posted 2005-03-27 11:09:37 »

Why should there be more overhead - I think you do not understand how Java handles its memory.

If you repaint the Swing stuff every frame, the paint(methods) of each component have to be invoked, and there are generated objects in this methods.
If you invoke this methods frequently, the GC is quite stressed - so to be not a performance bottleneck it enlarges the heap.

Thats it, no magic at all ;-)

lg Clemens

PS: Don't think to be clever
Offline K.I.L.E.R

Senior Member




Java games rock!


« Reply #2 - Posted 2005-03-27 11:22:28 »

Ahhh, thanks.
Sun's clever design. The more I understand, the better I get. Smiley

So it's not a bug, but a design decision.


Quote
Why should there be more overhead - I think you do not understand how Java handles its memory.

If you repaint the Swing stuff every frame, the paint(methods) of each component have to be invoked, and there are generated objects in this methods.
If you invoke this methods frequently, the GC is quite stressed - so to be not a performance bottleneck it enlarges the heap.

Thats it, no magic at all ;-)

lg Clemens

PS: Don't think to be clever


Vorax:
Is there a name for a "redneck" programmer?

Jeff:
Unemployed. Wink
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Linuxhippy

Senior Member


Medals: 1


Java games rock!


« Reply #3 - Posted 2005-03-27 16:36:24 »

Quote

So it's not a bug, but a design decision.
[/quote

GC-based languages/programs always use 10-40% more memory than they actually need, call it an ugly side-effect of GC based languages ;-)

lg Clemens
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

Riven (15 views)
2014-07-29 18:09:19

Riven (10 views)
2014-07-29 18:08:52

Dwinin (10 views)
2014-07-29 10:59:34

E.R. Fleming (28 views)
2014-07-29 03:07:13

E.R. Fleming (10 views)
2014-07-29 03:06:25

pw (40 views)
2014-07-24 01:59:36

Riven (39 views)
2014-07-23 21:16:32

Riven (27 views)
2014-07-23 21:07:15

Riven (29 views)
2014-07-23 20:56:16

ctomni231 (59 views)
2014-07-18 06:55:21
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!