2017-04-02 47 views
0

我在混合模式下運行時使用了彈簧表達式語言時遇到問題。使用混合模式的SpEL內存泄漏

在標準解釋模式下,一切似乎都可以正常工作。如果你有一個表達式說「a?.b?.c」,那麼如果在對象鏈b上是空的,你會像我期望的那樣返回null。

在混合模式下運行時發生該問題,並在100次調用後編譯該問題。在這種情況下,當你解析一個b爲null的對象時,似乎在Spring代碼中拋出一個空指針,並通過重置來處理 - 但這看起來會將原始編譯類留在內存中。

如果您運行一個反覆調用此例程的測試,那麼您最終將耗盡Perm Gen空間。

在編譯後的表達式中使用時,看起來像「a?.b?.c」這樣的空安全檢查似乎沒有被合併。

以前有沒有人看到過這個問題,對潛在的解決方案/解決方法有想法?

謝謝!

回答

0

這聽起來像一個bug;我建議你對Core:SpEL組件打開JIRA issue

如果你附上你的測試用例,這將會很有幫助。