JNIコードとSHRLIBRGNSIZE
昔、JNIコードを書いたのだが、最近になって一点考慮漏れがあることに気付いた。
正直そこまでたいそうな話ではないかもしれない。
.soに、Extended Attributesを付けることを考えてなかった。
extattrというのは、4つのオプションがある
a=APF authorized
p=program executable
s=shared address space
l=shared library
今回気にしているのはl(エル)のshared library。
extattr +l
これをしているとSHRLIBRGNSIZEで確保している領域に読まれるはず。
具体的に言うとSubpool 230 Key 0 に読まれるはずだ。
指定しなかったはどこに読まれるんだろうか・・・。
想定されるメリット
読み込みが早くなる
領域確保の場所が良くなる
(よく使うところがきっと空く)
まあ、そんなところか。
プログラムは小さかったから、そこまで影響する話ではなく、
重箱の隅をつつくような話だ。
server_region_libpathや
WASの共用ライブラリのNative Pathで読むにしても、
クラスローダーはたぶんこの属性を意識しているのではないだろうか。