Jimmy, Jing Lv wrote:
Leo Li wrote:
Hi,all:
As we all know, java objects are allocated on heap instead of stack,
thus there is a problem about how to garbage collect short-lived objects
quickly.
In a recent real project I involved, a server built on java tries to
send thousands of messages to client per second. A lot of short-lived
messages is created as objects and discarded. (Although I can recycle
these
memory, there is still a byte array created during per call of nio
read and
write.) Since current GC strategy adopted by current RI starts to work
only
when the memory allocated approaching the limit of java heap, the work
of GC
is huge and will raise a wave on the server performance. Furthermore,
after
a long run, although I know GC will merge memory, the operating system
reports there is memory fragment and in the worst case the OS will even
report real memory is exhausted.
Of course it is possible to limit the java heap so as to force gc
frequently as a workround, is it preferrable to collect short-lived
objects
quickly such as adopt aged-related object queues as one of the gc
strategy?
What about the VMs here, drlvm or J9?
Interesting topic, I'm still dreaming of "free()" in Java (This dream
begins at the very beginning when I see Java, as C/C++ is my first
program language )However, it seems RI will never give us "free()". :)
No :)
Only a thought, Java may offer a key word "temp", indicating that this
variety can be freed at once.
How can you tell? You need to be sure that value of the temp reference
isn't held by anyone else. You need to make sure it doesn't escape the
scope...
geir
Leo Li
China Software Development Lab, IBM
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]