Servlets 为发送给CGI的每个请求启动新流程意味着什么?

Servlets 为发送给CGI的每个请求启动新流程意味着什么?,servlets,jakarta-ee,process,cgi,Servlets,Jakarta Ee,Process,Cgi,我试图了解servlet及其相对于CGI的优势。有人提到,在CGI中,每次都会启动一个新的进程,与servlet相比速度较慢。有人能解释一下这里的进程到底是什么,以及它对CGI有什么好处吗?CGI可以被认为是一个正常的可执行文件——它是一个运行、做一些事情然后结束的程序。就像dos或shell命令一样。问题是,在启动这样一个可执行文件时,操作系统会分配内存,将程序加载到内存中,运行它,然后取消分配所有内容,这样会产生少量开销。如果您正在运行一个每秒有100多个请求的网站,那么这种开销可能会变得非

我试图了解servlet及其相对于CGI的优势。有人提到,在CGI中,每次都会启动一个新的进程,与servlet相比速度较慢。有人能解释一下这里的进程到底是什么,以及它对CGI有什么好处吗?

CGI可以被认为是一个正常的可执行文件——它是一个运行、做一些事情然后结束的程序。就像dos或shell命令一样。问题是,在启动这样一个可执行文件时,操作系统会分配内存,将程序加载到内存中,运行它,然后取消分配所有内容,这样会产生少量开销。如果您正在运行一个每秒有100多个请求的网站,那么这种开销可能会变得非常大,如果有许多并发HTTP请求到达服务器,那么可能会有许多CGI副本出现在内存中

另一方面,servlet只为内存中的一个实例分配了一次资源。此单个实例可以并发处理多个HTTP请求,单个实例在所有请求之间共享其分配的资源。这可能是一个问题-如果两个请求尝试访问,实例和静态变量可能会损坏。然而,效率和速度的优势远远超过了这一点