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

如何在Grails BuildConfig中设置JVM堆栈大小

黄弘深
2023-03-14

我有一个Grails 2.3。X项目,除非使用命令行参数指定更多堆栈大小,否则无法编译。目前这很好,但每次我第一次构建项目时都需要导出/设置JVM选项。此外,刚开始项目的开发人员总是会遇到这个问题,所以我希望它成为签出版本控制的代码的一部分。

有没有办法在Grails 2.3中设置stacksize(-Xss)JVM选项。X BuildConfig?

P、 Xss JVM选项是文档较少的选项之一。我是通过StackOverflow链接的互联网档案找到的

共有2个答案

柯浩壤
2023-03-14

可以在BuildConfig中传递所有JVM参数。groovy作为闭包:

grails {
    tomcat {
        jvmArgs = ["-server", "-XX:MaxPermSize=2048m", "-XX:MaxNewSize=512m", "-XX:NewSize=512m",
                "-Xms2048m", "-Xmx2048m", "-XX:SurvivorRatio=128", "-XX:MaxTenuringThreshold=0",
                "-XX:+UseTLAB", "-XX:+UseConcMarkSweepGC", "-XX:+CMSClassUnloadingEnabled",
                "-XX:+CMSIncrementalMode", "-XX:-UseGCOverheadLimit", "-XX:+ExplicitGCInvokesConcurrent"]
    }
夔高寒
2023-03-14

因为您使用的是Grails 2.3,所以可以使用分叉执行。在您的情况下,您可以传递以下附加参数

grails.project.fork.compile.jvmArgs = [ '-Xss1024k' ]
 类似资料:
  • 我在Windows Server R2 64位机器上安装了Apache Solr,具有8 GB的RAM。默认情况下,JVM似乎使用了大约256 MB的内存。由于我有一些相当大的文件用于索引,有时我会Java堆空间OutOfMemoryError。 我应该如何增加Solr可用的内存大小? 我在网上找到的大多数留档/帖子都指向像这样的东西,但是我没有通过命令行运行Solr。它是作为Windows服务运

  • 问题内容: 有没有办法从正在运行的Java程序中设置堆大小? 问题答案: 没有。 对于具有非常多的堆需求的应用程序,您可以做的是设置最大的堆大小-Xmx并进行调整,以使堆缩小时该应用程序不会挂在大量内存上(使用默认设置即可) )。 但是请注意,当应用程序实际使用的内存变化剧烈且快速时,这可能会导致性能问题-在这种情况下,最好将其挂在所有内存上,而不是仅将其退还给操作系统以声明使用它再过一秒钟。您可

  • 我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?

  • 我们有一个需求,即应用程序jvm总内存太高,并且根据输入数据集而变化。因此我们不知道要使用-xmx命令行选项设置的最大堆大小。所需的总内存大于默认的最大堆大小(总物理内存的1/4)。 当我们没有给出任何GC人体工程学命令行参数时,内存在9-9.5GB(系统中的总物理内存为38GB)之后没有增长。而应用程序就会在这一点上卡住。 如果我们将Xmx值设为20 GB,则应用程序正在运行。但是我们不确定最大

  • 问题内容: 每当加载一个类时,什么存储在堆中以及什么存储在堆栈中? 线程也驻留在哪里? 问题答案: 引用类型在堆中。 任何原始类型的数据和对堆上值(方法的参数/局部变量)的引用都在堆栈上。 每个线程都有自己的堆栈。 应用程序中的所有线程共享同一堆。

  • 问题内容: 我正在运行一个用Java在Eclipse中编写的程序。对于很大的输入,该程序具有很深的递归级别。对于较小的输入,程序运行正常,但是在给出较大的输入时,出现以下错误: 可以通过增加Java堆栈大小来解决此问题,如果可以,那么如何在Eclipse中做到这一点? 更新: @乔恩·斯基特 该代码递归地遍历解析树以建立数据结构。因此,例如,代码将使用解析树中的一个节点来做一些工作,并在该节点的两