这句话第一次看到是在jsp的教程里,jsp转换成servelt,然后servelt驻留内存,就可以对客户端的请求快速反应。一直不理解servelt为什么会驻留服务器的内存里。
后来看servelt的生命周期时,看到servelt的使用是需要容器的(就理解为tomcat吧,其实servelt容器被包含在tomcat里)。
容器装载servelt后,servelt会创建一个实例,实例去做init初始化,以及根据请求调用service方法处理请求。然后服务器停止时,servelt调用destory()销毁(销毁的是这个实例)。
这里的servelt如果理解为一段代码,那这个代码一直就在那没动,动的(初始化啊、处理请求啊,被销毁啊)其实是这段代码生成的一个实例。
这个过程其实感觉很像是进程。其实就可以理解为系统资源被访问生成进程进入内存被调度的过程。
servelt的代码就在那(系统资源就在那),servelt被访问(资源被访问),就被容器装载,生成一个实例(就生成一个进程进入内存),其实进入服务器内存的是这个实例,而不是servelt。把这个实例理解为进程就好了。
驻留服务器内存的是这个实例,其实当成servelt每次被tomcat容器装载,就创建一个实例保留在服务器内存里,理解为servelt的代码,在被装载(被访问了,所以需要装载进容器里)时,其实就是相当于操作系统的资源(或者代码)被调用,创建一个进度进入内存的调度里。
当服务器终止,实例被销毁,因为进程肯定死亡了。
当servelt的Java代码被修改,肯定要重新装载,因为要创建一个新的实例再次进入内存被调度
这个实例(进程)被用来处理请求,如果有多个请求(多个客户端同时访问),就生成多个线程处理(是不是很像操作系统里的多线程在系统调度下切换同时访问一个资源)