Servlet什么时候初始化?

Servlet什么时候初始化?

最近面试遇到了这样一道题,面试官问Servlet什么时候初始化?回答是:在web容器启动的时

候初始化,然后他笑了笑,我就一脸懵逼了。回来之后查了查资料,明白当时的回答是多么的傻!

以在这里总结大家之言,以提供给更多不解之人与之帮助,希望有所帮助!

一直一来都认为Servlet是在web容器启动的时候初始化,但仔细想想有很多地方可以推究。如

果有一万个servlet,那服务器启动的时候就要实例化一万个类,那就是要在内存(堆中)中创建一万

个对象,一次创建这么多对象,对于内存(堆中)而言负载量相当的大,有可能就会出现《内存溢出》

的异常,所以后来想想,应该是在请求的时候才去实例化的吧,这样的话,对于容器而言不用启动的时

候就加载那么多东西,感觉这就是请求时才加载的根本原因吧,纯属个人见解(以上是转自http://bl

og.csdn.net/wwhmj/article/details/51647063),希望各位有不同见解的

提出来,大家一起讨论。

如果没有设置loadOnStartup,则第一次请求的时候实例化
分三种情况:
loadOnStartup < 0 
即负数的情况下,web容器启动的时候不做实例化处理,servlet首次被调用时做实例化
这种情况和没有设置loadOnStartup是一样的。
loadOnStartup > 0
web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化
loadOnStartup = 0
web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化


配置 web.xml 

配置一个普通的servlet 

   

    AServlet 

    com.servlet.AServlet 

    4 

   

你可能感兴趣的:(javaEE,servlet,面试,实例,初始化)