Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (416)
games submitted by our members
Games in WIP (306)
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 671 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.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Try the Free Demo of Revenge of the Titans

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

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
BrassApparatus (11 views)
2013-06-19 08:52:37

NegativeZero (17 views)
2013-06-19 03:31:52

NegativeZero (19 views)
2013-06-19 03:24:09

Jesse_Attard (20 views)
2013-06-18 22:03:02

HeroesGraveDev (62 views)
2013-06-15 23:35:23

Vermeer (61 views)
2013-06-14 20:08:06

davedes (61 views)
2013-06-14 16:03:55

alaslipknot (55 views)
2013-06-13 07:56:31

Roquen (77 views)
2013-06-12 04:12:32

alaslipknot (61 views)
2013-06-10 19:30:18
Smoothing Algorithm Question
by UprightPath
2013-05-28 02:58:26

Smoothing Algorithm Question
by UprightPath
2013-05-28 02:57:33

Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38
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!