2017-04-02 8 views
0

混在モードで実行しているときにsprings式言語を使用する際に問題があります。混在モードを使用したSpELメモリリーク

標準のインタプリタモードでは、すべてが正常に機能しているようです。 "a?.b?.c"という式がある場合、オブジェクトチェーンbがnullの場合、期待通りにnullが返されます。

混在モードで実行しているときに問題が発生し、100回の呼び出し後にコンパイルされます。この場合、bがnullのオブジェクトを解決すると、スプリングコード内でnullポインタがスローされ、リセットによって処理されるように見えますが、これは元のコンパイル済みクラスをメモリ内に残しているようです。

このルーチンを繰り返し呼び出すテストを実行した場合、最終的には、[Perm Gen space]が不足します。

「a?.b?.c」のようなヌルの安全チェックは、コンパイルされた式の中で使用されると組み込まれていないようです。

潜在的な解決策または回避策に関するアイデアはありますか?

ありがとうございます!

答えて

0

これはバグのようです。私はあなたがCore:SpELコンポーネントに対してJIRA issueを開くことを提案します。

テストケースを添付すると便利です。

関連する問題