当前位置: 首页 > 面试题库 >

在运行时设置JVM堆大小

松献
2023-03-14
问题内容

有没有办法从正在运行的Java程序中设置堆大小?


问题答案:

没有。

对于具有非常多的堆需求的应用程序,您可以做的是设置最大的堆大小-Xmx并进行调整-XX:MaxHeapFreeRatio-XX:MinHeapFreeRatio以使堆缩小时该应用程序不会挂在大量内存上(使用默认设置即可) )。

但是请注意,当应用程序实际使用的内存变化剧烈且快速时,这可能会导致性能问题-在这种情况下,最好将其挂在所有内存上,而不是仅将其退还给操作系统以声明使用它再过一秒钟。您可能还想弄弄GC选项,以确保GC不会在周围留下过多的无人认领的对象,当堆有很大的增长空间时,GC往往会这样做,这会破坏目标希望堆大小能够适应应用程序的需求。



 类似资料:
  • 问题内容: 在已经加载(运行)JVM之后,是否可以更改/修改/添加VM参数?如果是这样,我该怎么办? 问题答案: 对于通过命令行上的标志设置的属性,您需要System.setProperty。例如: 更新: 您无法动态启用调试,但是可以在启动时启用调试,但稍后再附加调试器。通过以下操作,您可以侦听端口12345并立即开始运行程序(通过)。然后,您可以在需要时附加调试器,分离调试器,稍后再附加等。

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

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

  • 问题内容: 大家好,我观察到在设置堆大小时人们倾向于使用值64,128,256,1024。如果我在这些数字之间输入一个值(例如500),jvm是否会接受该值?为什么这些数字很重要且更受欢迎?为什么我们也以这种模式升级RAM。 请帮助我理解。 在此先感谢哈宾 问题答案: JVM将接受任何值,这没有问题。使用2 ^ n值只是一个“惯例”,在实践中使用其他值不会有负面影响。

  • 主要内容:1.图解对象分配过程,2.Minor GC、Major GC、Full GC,3.TLAB(线程私有缓存区域)1.图解对象分配过程 特殊情况 2.Minor GC、Major GC、Full GC 部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为: 新生代收集(Minor GC/Young GC):只是新生代的垃圾收集 老年代收集(Major GC/Old GC):只是老年代的垃圾收集 混合收集(Mixed GC):收集整个新生代以及部分老年代的垃圾收集 整堆收集(Full

  • 主要内容:1.堆的细分内存结构,2.设置堆内存大小与OOM,3.年轻代与老年代1.堆的细分内存结构 JDK 7以前: 新生区+养老区+永久区 Young Generation Space:又被分为Eden区和Survior区Young/New Tenure generation Space:Old/Tenure Permanent Space:Perm JDK 8以后: 新生区+养老区+元空间 Young Generation Space:又被分为Eden区和Survior