spring mvc重定向_Spring的Web MVC –重定向到内存泄漏
spring 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 mvc重定向
spring mvc重定向_Spring的Web MVC –重定向到内存泄漏相关推荐
- 检测Web浏览器上的内存泄漏
目录 背景 拍摄堆快照 一个真实世界的例子--AsyncSubject 附加说明 兴趣点 下载源 - 1.2 KB 背景 当您关闭浏览器选项卡时,所有内存都将被释放.内存泄漏在Web浏览器上很可能不是 ...
- Spring的Web MVC –重定向到内存泄漏
他们说一块岩石会引起雪崩. 最近,我的一位同事Marcin Radoszewski给了我一块岩石. 您可能永远都不会猜测它是什么,但是有机会在许多Web应用程序中使用它. 请允许我向您介绍这块石头. ...
- Spring Web MVC(一)
概述 Spring Web MVC框架的特点 五大核心组件 编程步骤 五大核心组件 DispatcherServlet前端控制器 WebApplicationContext中特殊的bean 处理过程 ...
- Spring Web MVC是什么
2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职 ...
- Spring系列(九)- Spring Web MVC 框架
文章目录 MVC设计模式简介 Spring MVC 工作流程 Spring MVC接口 需求的配置 Spring MVC视图解析器 Controller 注解类型 Spring MVC的转发与重定向 ...
- Spring Web MVC详解
Spring Web MVC详解 原创 2016年03月23日 10:55:57 标签: 421 编辑 删除 2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java ...
- 【Spring Web MVC】Spring Web MVC 注解开发环境搭建
为什么80%的码农都做不了架构师?>>> 1.创建maven项目 创建一个名为:springwebmvc-first的maven项目 2.添加依赖包 要使用springWebM ...
- Spring.Web.Mvc 注入(控制器属性注入)
1.web.config配置 <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.N ...
- spring mvc原理_Spring MVC的工作原理,我们来看看其源码实现
来源:https://www.cnblogs.com/youzhibing/p/10695012.html 作者:youzhibing2904 遗留问题 在关于利用maven搭建ssm的博客,我们一起 ...
最新文章
- 如何将重复的数据标红_python如何处理重复值数据?
- js向head中添加js代码
- 系统安装操作优化:chapter 3 安装windos操作系统。
- jquery饼状图插件的指引线_JQuery图表插件Highcharts示例教程
- linux:vim中全选复制
- Java记录 -9- 面向对象之封装
- 数值计算方法(高斯消元以及LU分解)
- 超级简单的jQuery纯手写五星评分效果
- Java_Spring MVC_Servlet
- 智能家居控制系统完整设计方案
- 瑞能实业IPO被终止:年营收4.47亿 曾拟募资3.76亿
- 修改element $prompt的文字样式
- Geronimo入门与进阶
- java 生成数字_Java随机生成数字的方法
- 使用IDEA连接本地数据库
- 分布式学习之一:事务
- Android-APP隐私合规检测
- IDEA中Artifact的配置
- 请问mysql 中的ZEROFILL是什么意思
- MacBook Pro如何修改Type C网口适配器的Mac地址