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

Bhu*_*han 6 java memory multithreading

当我们在Java程序中启动线程时,有没有办法让我们为每个线程分配内存限制?

我的意思是我们为新Java流程分配这样的东西:

/usr/java/default/bin/java -Xms512m -Xmx1024m -jar /opt/abc/MyProcessor/MyProcessor.jar
Run Code Online (Sandbox Code Playgroud)

有什么方法可以用Java线程做类似的事情吗?

基本上,我的每个线程都要完成一些任务,我希望对每个内存的使用量设置一些最大限制.

Vin*_*lds 5

有什么办法可以用 Java 线程做类似的事情吗?

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

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

您可以:

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