有没有办法在Java中的每个线程上设置最大内存使用限制?

当我们在Java程序中启动线程时,是否有任何方法可以为每个线程分配内存限制?

我的意思是我们为新Java流程分配了以下内容:

/usr/java/default/bin/java -Xms512m -Xmx1024m -jar /opt/abc/MyProcessor/MyProcessor.jar

我们可以用Java线程做任何类似的事情吗?

基本上,我的每个线程都将执行某项任务,我希望对每个线程的内存使用量设置一些最大限制。

回答:

我们可以用Java线程做任何类似的事情吗?

不能。进程中的线程通常用于访问进程(在本例中为JVM)中的共享主内存。

基本上,我的每个线程都将执行某项任务,我希望对每个线程的内存使用量设置一些最大限制。

您可以执行以下任一操作:

  • 简单的方法。生成新的JVM进程,您可以在其中指定每个进程的堆大小。
  • 困难的方式(我不推荐;这是一个可用的选项)。你可以 近似 认为是在每个线程创建的对象的大小,如果由一个线程创建的对象的大小超过一定量停止线的进一步执行。这将要求您封装new关键字。用简单的话来说,所有对象都必须从工厂实例化,以保持 近似的 内存使用情况。请记住,堆上的对象大小是近似值;Java没有sizeof运算符。如果您需要在堆栈上保留对象数,那么使用-Xss启动时传递给JVM 的标志很容易做到这一点。

以上是 有没有办法在Java中的每个线程上设置最大内存使用限制? 的全部内容, 来源链接: utcz.com/qa/429909.html

回到顶部