SpringMVC 面试 高级 深度

一.springmvc的工作流程

1.用户的请求先到达调度控制器DispatchServlet,DispatchServlet去找处理器映射器handlerMapping
2.处理器映射器再去找处理器适配器handlerAdaper,处理器适配器根据请求的url适配具体的处理器对象和拦截器对象,处理具体的业务逻辑返回ModelAndView
3.dispatchServlet拿着ModelAndView去找ViewResolver视图解析器,返回view
4.dispatchServlet对view进行渲染,数据填充,返回给前端

二.springmvc的控制器是不是单例的,如果是 会有什么问题,如何解决的

是单例的,在单例中的类变量会有线程安全问题,如果需要写可以使用ThreadLocal

三. ThreadLocal详解

1.ThreadLocal是如何实现线程安全的

用锁实现线程安全是阻塞内存,ThreadLocal是数据隔离,避免共享数据,每个线程都有一个ThreadLocalMap

2.ThreadLocal中的弱引用了解吗

ThreadLocalMap中的entity节点的key是弱引用,要注意内存泄漏的问题

3.如何处理内存泄漏的问题

先说答案:及时remove().
1.entity强引用导致的内存泄漏.
2.entity的key的弱引用被回收,但是value没有被回收导致的内存泄漏.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值