当我们在Java
程序中启动线程时,我们是否有办法为每一个程序分配内存限制?
我的意思是我们为新的Java
进程分配这样的内容:
/usr/java/default/bin/java -Xms512m -Xmx1024m -jar /opt/abc/MyProcessor/MyProcessor.jar
我们有什么方法可以用Java线程做类似的事情吗?
基本上,我的每个线程都要完成一些任务,我希望对每个内存的使用量设置一些最大限制。
答案 0 :(得分:4)
我们有什么方法可以用Java线程做类似的事情吗?
没有。进程中的线程通常用于访问进程内的共享主内存(在本例中为JVM)。
基本上,我的每个线程都要完成一些任务,我希望对每个内存的使用量设置一些最大限制。
你要么:
new
关键字。简而言之,所有对象都必须从工厂实例化,这些工具将保留近似内存使用情况的选项卡。请记住,堆上的对象大小是近似值; Java没有sizeof
运算符。如果需要在堆栈上保留对象的数量,那么使用在启动时传递给JVM的-Xss
标志很容易实现。答案 1 :(得分:2)
要对每个线程设置一个限制,您需要在单独的进程中运行每个线程。
线程共享内存,因此无法自动为特定线程分配内存。但是,您可以在代码中自己进行计算(针对每种感兴趣的数据类型)并管理每个线程使用的内存量。
答案 2 :(得分:1)
您可以使用-Xss
增加线程堆栈大小。它将适用于每个线程。堆是共享的,因此您无法单独更改线程。
答案 3 :(得分:1)
总之,没有。
特定线程没有“拥有”堆内存的概念。
然而,你可以调整最大堆栈大小(每个线程都有自己的堆栈),但我怀疑这是你所追求的。