openssl s_client -connect www.oresama_server.fuga:443
プロンプトになるので、HTTPのやりとりを打つ。
GET /abeshi.html
アー('A`)マンドクセ
reflectionを行うときの ByteCode Accessor
アクセッサーには2種類あり、JNI AccessorとByteCode Accessor
ご存知のようにJNI操作はコストが高いので、頻繁に呼び出されるとJNIからByteCodeへ昇格される
そうすることで、reflectの動作を高速化させている。
これが導入されたのはJRE1.4x以降
reflectAPIの呼び出し単位で作成されてしまうので、フレームワークなんかを
使っているともう吐き気するぐらい作成される。
ClassオブジェクトなのでJVMのバージョンによってはHeapの中では厄介ものである
(フラグメント要因になる)。
だが安心してほしい。弱参照状態で作成され、参照は親のClassLoaderだけなので、
「使用中」でなければ破棄できる。
破棄されたものは、再びJNI Accessorからの出直しになる。
パレートの法則。80:20の法則。
GC対象になるようなAccessor = 未使用 =20%部分じゃない =パフォーマンスに影響を与えない
パフォーマンスチューニングにおける大前提である。
-D sun.reflect.noInflation = false (default value is false)
-D sun.reflect.inflationThreshold = 15 (default value is 15)
noInfration =true は進化をやめよ、となり、デフォルトでbyteCodeAccessorが作成される
よって、マッハになるかもしれないがsun.reflect.Generatedほげほげの数は増える
inflationThreshold は進化までの回数。デフォルトでは15回呼ばれるとHot判定になりbyteCodeAccessorが作成される
普通はこんなコアな設定はさわらんでよろしい。
その前に直すべき箇所があるはずである。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 |