A Java application will take only as much memory as it needs for the objects it has
created. Given your heap settings, the JVM will initially reserve 1024MB of memory (in
Windows it shows up as "committed" memory) thought the OS is typically a little
smarter and only allocates the actual amount of physical memory required by the allocated
objects. For example, the app might need only 200MB, in which case that amount of physical
memory is allocated while the other 824MB stays in reserve and is physically allocated
only when required.
If you put a pause at the start if your memory-eating app, you will notice that it also
initially only uses a very small amount of memory. If you put a pause between iterations
of your loop you will see them emory gradually increase.
The app server does lazy-loading for deployed applications and services. As the app server
runs and handles requests, you will see the memory usage increase. If you want to
pre-allocate that memory, you could create a service that initializes various apps by
doing things such as establishing database connections, allocating EJBs, etc.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4042681#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...