gcj executable size reduction?

Dalibor Topic robilad@kaffe.org
Fri Apr 16 11:50:00 GMT 2004


Hi Boris,
Boris Kolar wrote:
>>I've also used jikes in the past, to compile java.lang.Object and let it
>>drag in all the dependencies automatically. It mostly works, as far as I
>>recall. It's a rather quick way to figure out the 'resident size' of
>>your class library.
>>> Wouldn't that also include "private" dependancies (dependancies in
> private methods,...)?

Yes.
> I think it wouldn't be that difficult to use reflection to determine
> public+protected dependancies of an object. These "public"
> dependancies can't be removed unless you are willing to sacrifice
> compliance with standards. But I guess removing private dependancies
> would help a lot.

Usually the private methods are used to implement the public ones. For 
example, when several of your public methods need to do A, then 
refactoring A into a private method of its own helps clean up the code.
Doing the jikes thing above, for example, results in a core rt.jar for 
kaffe [1] that's about 600k, whereas the normal rt.jar for kaffe is 
around 3 megs. Of course, chances are that in this 600k there is some 
necessary stuff missing, which is required to run actual programs; like 
localization or character conversion ressources, or classes only loaded 
through reflection.
But it provides a quick starting point for such 'prune down the class 
library to bare necessities' applications for embedded users. It was 
what I used when I added support for class library profiles in kaffe.
cheers,
dalibor topic
[1] Not that kaffe doesn't use the same libraries that gcj uses, so the 
actual results on gcj's class libraries may be different.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /