Java 有没有办法限制每个线程的最大内存使用量?

2023-11-26

当我们在 a 中启动线程时Java程序,我们有什么办法可以为每个程序分配内存限制吗?

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

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

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

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


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

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

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

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

  • 最简单的方法。生成新的 JVM 进程,您可以在其中指定每个进程的堆大小。
  • 困难的方法(我不推荐;这是一个可用的选项)。你可以近似每个线程中创建的对象的大小,如果线程创建的对象的大小超过一定数量,则停止线程的进一步执行。这将需要您封装new关键词。简而言之,所有对象都必须从工厂实例化,工厂将密切关注近似内存使用情况。请记住,堆上的对象大小是一个近似值; Java 没有sizeof操作员。如果您需要统计堆栈上的对象数量,那么很容易做到这一点,使用-Xss启动时传递给 JVM 的标志。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 有没有办法限制每个线程的最大内存使用量? 的相关文章

随机推荐