日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring的Web MVC –重定向到内存泄漏

發布時間:2023/12/3 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring的Web MVC –重定向到内存泄漏 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

他們說一塊巖石會引起雪崩。 最近,我的一位同事Marcin Radoszewski給了我一塊巖石。 您可能永遠都不會猜測它是什么,但是有機會在許多Web應用程序中使用它。 請允許我向您介紹這塊石頭。

您可能很清楚發布模式后的重定向 。 使用Spring Framework,您有幾種方法來實現它,讓我們專注于其中一種, 將目標URL作為帶有redirect: prefix的String返回 。

假設我們有使用這種重定向方法的控制器,并且在重定向期間必須傳遞一些參數,例如,讓它成為某些實體ID:

@RequestMapping(method = RequestMethod.POST) public String onPost(...) {...return "redirect:form.html?entityId=" + entityId; }

如您所見,我們的巖石看上去并不危險,甚至看上去都不可疑–這到底是怎么了? –您可能會問。 好了,要解釋一下,我們必須看看Spring Framework如何處理您返回的值的方式。

您可以從閱讀Spring Framework文檔中的解析視圖開始,然后仔細查看AbstractCachingViewResolver的源代碼,它是Spring中許多不同的視圖解析器的基類,包括:JSP,FreeMarker,Velocity,Jasper Reports,Tiles和XSLT視圖解析器。

當resolveViewName方法被調用AbstractCachingViewResolver的它采用了基于HashMap的視圖緩存加快鑒于在未來的呼叫解決,和緩存關鍵是使用視圖名稱和當前語言環境中創建的默認。

現在,當您使用上述重定向方法時, Spring Framework將從控制器的方法返回的整個String用作視圖名稱,包括目標URL中包含的所有參數。 每次執行重定向時,參數可能會有所不同,因此這種重定向將在AbstractCachingViewResolver的視圖緩存中留下一個額外的條目,從而導致內存泄漏。

多久會終止我的申請? –您可能會問。 這取決于分配給JVM的內存量以及執行的重定向次數–我已經使用-Xmx64M選項進行了一些測試,僅通過一個控制器即可構建簡單的應用程序-請參見本示例 。 大約76400重定向后,應用程序因OutOfMemoryError:Java heap space終止。

參考: Spring的Web MVC –在Warlock's Thoughts博客上從我們的JCG合作伙伴 Michal Jastak 重定向到Memory Leak 。

翻譯自: https://www.javacodegeeks.com/2012/12/springs-web-mvc-redirect-to-the-memory-leak.html

總結

以上是生活随笔為你收集整理的Spring的Web MVC –重定向到内存泄漏的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。