きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

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で読むにしても、

クラスローダーはたぶんこの属性を意識しているのではないだろうか。