Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分配给从servlet执行的主类的内存?_Java_Multithreading_Servlets - Fatal编程技术网

Java 分配给从servlet执行的主类的内存?

Java 分配给从servlet执行的主类的内存?,java,multithreading,servlets,Java,Multithreading,Servlets,我有一个servlet,它使用main method()执行一个类,您通常可以通过命令行启动该类 在像tomcat、weblogic server这样的web容器中,web容器将有自己定义的堆空间和线程数来执行web应用程序发送的请求 如果我用servlet中的main方法()启动一个类,那么分配给这个类的内存和线程是多少?当通过调用MyClass.main()调用该方法时(正如您在注释中所述),调用该方法与调用main没有关系-它将与任何其他方法调用一样。这样的 执行期间使用的所有内存都将分

我有一个servlet,它使用main method()执行一个类,您通常可以通过命令行启动该类

在像tomcat、weblogic server这样的web容器中,web容器将有自己定义的堆空间和线程数来执行web应用程序发送的请求


如果我用servlet中的main方法()启动一个类,那么分配给这个类的内存和线程是多少?

当通过调用
MyClass.main()
调用该方法时(正如您在注释中所述),调用该方法与调用
main
没有关系-它将与任何其他方法调用一样。这样的

  • 执行期间使用的所有内存都将分配到tomcat的堆上
  • 将在处理servlet请求的线程中执行。因此,servlet在退出
    main()
    之前不会继续处理
使用非tomcat堆存储的最简单方法是通过
Runtime.exec()
生成一个新的VM进程,并在那里运行程序。这将导致相当大的开销,因为启动VM可能需要一段时间


如果您可以在tomcat的VM中运行,但希望与servlet处理并行执行任务,则必须实现自己的线程处理。

您将如何“使用主方法启动类”?通过
MyClass.main()
或通过
Runtime.exec()
?@piet.t从MyClass.main()开始在这种情况下,它将导致线程饥饿,因为我有很多这样的请求。我的客户机在我的servlet上调用,并且依赖于我的servlet返回一些结果,但是处理它需要很长时间。我是否可以实现一个异步servlet,并在处理完成后将结果返回给客户机?