当前位置: 首页 > 知识库问答 >
问题:

xss为1个线程设置线程堆栈大小,所有线程堆栈大小的限制是什么

戚浩淼
2023-03-14

我知道如何使用-Xss为java线程设置堆栈大小,我们在产品中使用它。

但是当我们的应用程序中使用了很多线程,并且设置了-Xss(我们设置为512k我们的使用)。我们会遇到错误报告无法创建新的本机线程。它应该与堆栈大小有关,因为当我们设置-Xss256k时,错误消失了。

我的问题是对于1个线程,Xss设置堆栈大小,但是对于所有线程,堆栈大小如何<整个线程的总堆栈内存大小的限制是什么?我没有发现这样的JVM设置,而我们现在似乎遇到了这样的问题。

共有1个答案

公孙俭
2023-03-14

-Xss设置为每个新线程的堆栈保留的默认虚拟内存量。(也就是说,对于每个没有通过其构造函数给出显式堆栈大小的新线程。)

没有选项限制所有线程的组合堆栈大小。

如果将-Xss从512K设置为256K可以使程序创建更多的线程,那么您的程序一定创建了大量的线程。

所有这些线程在做什么?

您确定在线程池中使用有限数量的线程无法解决问题吗?

 类似资料:
  • 问题内容: 进程的大小是否有限制?它是否仅取决于机器的性能?我想知道这一点,以限制对函数的递归调用的深度。 谢谢。 问题答案: 堆栈通常受资源限制的限制。您可以使用以下命令查看安装的默认设置: (这表明我的是8MB,这是巨大的)。 如果删除或增加该限制,您仍将无法使用计算机中的所有RAM作为堆栈- 堆栈从进程地址空间顶部附近的一点向下增长,并在某个时刻它将运行到您的代码,堆或已加载的库中。

  • 问题内容: 有谁知道是否有一种方法可以动态地(运行时)增加主线程的堆栈大小?另外,我相信这是同样的问题,是否可以在实例化之后增加/更新a的堆栈大小? 的CTOR允许定义其堆栈大小,但是我找不到任何更新方法。实际上,我没有在JDK中找到对堆栈大小的任何管理(这往往表明这是不可能的),一切都在VM中完成。 根据Java语言规范,可以在“创建堆栈时”设置堆栈大小,但需要注意以下几点: Java虚拟机实现

  • 我见过JVM选项-XSS-它到底做什么?这个链接,但我的问题是这个选项怎么有用。 因为如果我们对-xss值设置一个最小的限制,线程可能无法正常工作,因为它可能在大多数情况下引发stackOverflow错误。 为什么这个值至少有64K限制? 我是如何获得这个64K限制的,当我试图在IntelliJ iDE上配置运行时vm选项时,我试图给出一些类似10K的东西,但它弹出这个错误,说明线程堆栈大小至少

  • #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } int m

  • 我试过下面的程序。创建此程序的目的是了解有关堆栈大小的更多信息。 执行上述代码后,由于堆栈大小分配过大,程序崩溃。堆栈的最大可能大小是多少?是否为每个程序/计算机固定?可以增加吗? 我想知道是为了知识。如果有人能提供C/C中的例子,那将是非常有帮助的。

  • 在堆上分配内存时,唯一的限制是可用RAM(或虚拟内存)。它产生Gb的内存。 那么,为什么堆栈大小如此有限(大约1 Mb)?什么技术原因阻止您在堆栈上创建真正大的对象? 更新:我的意图可能不清楚,我不想在堆栈上分配巨大的对象,也不需要更大的堆栈。这个问题只是纯粹的好奇心!