Tomcat classloads

2002-11-28 Thread Reynir Hübner
Hello,

I am wondering if there is any "short-cut" into seeing how much memory each webapp in 
tomcat is taking at runtime ?
I know it's possible to wrap the classloader object for webapplications, and make it 
count the numbers of objects instanciated, aproxiate the memory taken by each object 
by counting the fields each object has, and store in week-reference object storage 
(such as week hashmap), and count down when object gets garbagecollected. 

The idea is some kind of a "profiling feature" for webapplications and I think a nice 
feature to have.

These days I'm using T.C. 4.1.12-16 running on windows machines.

Does anyone have thoughts or ideas on this subject ?

Thanx
-reynir





RE: Tomcat classloads

2002-12-02 Thread Shapira, Yoav
Hi,

>I am wondering if there is any "short-cut" into seeing how much memory
each
>webapp in tomcat is taking at runtime ?
>I know it's possible to wrap the classloader object for
webapplications,
>and make it count the numbers of objects instanciated, aproxiate the
memory
>taken by each object by counting the fields each object has, and store
in
>week-reference object storage (such as week hashmap), and count down
when
>object gets garbagecollected.

This is basically what profilers do ;)

>The idea is some kind of a "profiling feature" for webapplications and
I
>think a nice feature to have.

It would be a nice feature to have, I agree.

>Does anyone have thoughts or ideas on this subject ?

Like most really nice features, this is a pain to implement.
Hierarchical memory usage is very very difficult to quantify.  For
example, you can see that there are n String objects in the heap, and
you can approximate (but being exact is very difficult here, and I do
think it comes to a point where we have to be exact) how much memory
they take up collectively.  You can go a step further using the JVMPI
and get allocation backtraces, e.g. x of these n strings were allocated
by this method.  And you can then some those up with by webapp using
your approach, to get some idea of the memory usage by a webapp.

So this solution, which is not trivial to implement will be:
- Unlikely to give accurate results, only approximations of varying
precision (according to data type and other variables).
- Likely to significantly decrease performance of the running webapp,
enough so that it couldn't be used in production.

I'm not saying it's a bad idea: I'm just sharing my thoughts as
requested ;)  It'd a be a cool feature to have and I think we
collectively need to do more in terms of providing profiling and
benchmarking tools, options, and data to our users.  But it's not an
easy domain to work in ;)

Yoav Shapira
Millennium ChemInformatics

--
To unsubscribe, e-mail:   
For additional commands, e-mail: