有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

oraclejre中的jvmjava线程stacksize参数效应

我正在研究Threadstacksize参数,以处理我在另一个问题How to extend stack size without access to JVM settings?中描述的一些递归

The Javadoc说:

On some platforms, specifying a higher value for the stackSize parameter may allow a thread to achieve greater recursion depth before throwing a StackOverflowError. Similarly, specifying a lower value may allow a greater number of threads to exist concurrently without throwing an OutOfMemoryError (or other internal error). The details of the relationship between the value of the stackSize parameter and the maximum recursion depth and concurrency level are platform-dependent. On some platforms, the value of the stackSize parameter may have no effect whatsoever.

有人有更多的细节吗?运行我的代码的服务器具有Oracle Java运行时环境。指定堆栈大小是否有效?我没有关于操作系统(或其他系统规格)的信息,我不能测试自己,因为我不能全年提交代码


共 (1) 个答案

  1. # 1 楼答案

    Oracle Java Runtime Environment.

    这是不赞成的

    Will specifying stack size have effect?

    它会改变每个线程堆栈的大小,是的

    这会影响你的应用程序吗?可能不会

    如果你同时运行多个线程(我们说的至少是几百个),降低线程可能会产生效果(特别是,可能会使你的应用程序正常工作,而如果不这样做,你的应用程序就会出现内存不足错误,或者应用程序会变得像糖浆一样,因为你的系统没有RAM)

    如果你有很深的递归堆栈,但不是永远运行的类型(由于代码中的错误),增加它可能会产生影响(特别是,可能会使你的应用程序工作,而如果不这样做,你的应用程序会因堆栈溢出错误而失败)

    大多数java应用程序都没有,在这种情况下,-Xss选项可以正常工作,但您不会注意到。内存负载几乎没有变化。该应用程序继续以同样的速度工作

    您的应用程序是否属于这两个异国情调的类别之一?我们怎么能在看不到任何代码的情况下判断呢

    大多数应用程序没有,这是。。。所有这些都是要说的,没有更多的细节

    如果你只是想调整一些东西,让它“运行得更好”,那么就不要这样做。默认设置是默认的,原因是:在大多数情况下,它们工作得最好。除非您有大量信息(最好是由探查器报告备份),否则您不会调整默认值,这种调整是必要的。如果目标只是“让事情更顺利地运行”,我会从替换你已经过时(非常过时)的JRE开始。JRE作为一个概念已经不存在了(java8是最后一个拥有它的,现在已经有将近十年的历史了)——只需安装一个JDK