请问tomcat一启动就把classes下面的类都加载到内存中吗?
我的意思是static的,new是你用到再分配堆内存,但是tomcat一启动就将所有的class里面的static都load进内存吗?...
我的意思是static的,new是你用到再分配堆内存,但是tomcat一启动就将所有的class里面的static都load进内存吗?
展开
展开全部
可以负责的告诉你:不是
tomcat只load当前需要的class,static class相较于一般class的不同之处在于存储的时候采用的是全局控制。
可以自验证,方法如下:
写两个static class 其中一个是死循环,一个是简单控制if else
分别放在构造函数中,主调class 没有实例两个 static 时(即没有调用)是不会有输出的
反之(调用),则存在输出。
tomcat只load当前需要的class,static class相较于一般class的不同之处在于存储的时候采用的是全局控制。
可以自验证,方法如下:
写两个static class 其中一个是死循环,一个是简单控制if else
分别放在构造函数中,主调class 没有实例两个 static 时(即没有调用)是不会有输出的
反之(调用),则存在输出。
追问
也就是用到才load,通过servlet去load,那servlet也是用到再load吗?(通过配置load-on-startup控制?)由spring管理的bean呢?
追答
servlet是一种配置机制,本身也是用到的时候才加载。
spring中bean与servlet的相同点在于本质都是class,不同在于使用的框架机制,就加载本身来说没有区别,都是啥时候用,啥时候加载,这也是所有高级语言的重大改进点。减少内存的负担
展开全部
在web工程中还可以配置,Servlet的启动优先级,可以设置程序启动优先级
在web.xml 文件中<load-on-startup></load-on-startup>标签
<load-on-startup></load-on-startup>指 定当Web应用启动时,装载Servlet的次序。
当值为正数或零时:Servlet容器先加 载数值小的servlet,再依次加载其他数值大的servlet.
当值为负或未定义:Servlet容器将在 Web客户首次访问这个servlet时加载它
在web.xml 文件中<load-on-startup></load-on-startup>标签
<load-on-startup></load-on-startup>指 定当Web应用启动时,装载Servlet的次序。
当值为正数或零时:Servlet容器先加 载数值小的servlet,再依次加载其他数值大的servlet.
当值为负或未定义:Servlet容器将在 Web客户首次访问这个servlet时加载它
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询