Why is .bss so big?

David Daney ddaney@avtrex.com
Sun Jan 29 20:38:00 GMT 2006


Anthony Green wrote:
> I've just had a quick look at some .jar.so files and I don't understand
> something.
>> For instance, if I look at gnu-crypto-2.0.1.jar.so, built with gcj 4.1
> in FC rawhide, size tells me that .bss is 55136 bytes.
>> However, objdump only tells me about 312 symbols in .bss, virtually all
> of which are only 4 bytes large. There are only two symbols larger, and
> they're both 8 bytes.
>> So why is .bss so large?
>
All uninitialized static variables of fundamental type are in .bss. I 
think all static references (initialized or not) are there also. Only 
non-private statics will have exported symbols in the final .so, so if 
there were a lot of private statics, they would not be shown by objdump.
I would try compiling the jar file with -S -funit-at-a-time and look at 
the assembly language to see if there are things in .bss that are not 
static variables. For some simple classes I have been looking at, only 
static variables end up in .bss.
You could also try examining the .so with readelf -e and see if there 
are sections other than .bss of type NOBITS that would be reported as 
.bss by size.
David Daney


More information about the Java mailing list

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