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

有没有人发现垃圾回收调优很有用?

徐丰茂
2023-03-14
问题内容

我已经阅读了很多有关在Java中优化GC的文章,并且经常想知道有多少人 真正 使用了一些更高级的功能。

我一直避免在可能的地方进行调整,而专注于编写我能做的最简单的代码(Brian Goetz的建议)-到目前为止,这对我来说似乎一直很好。

这些调整策略是否具有弹性,可以跨VM版本进行更改,或者它们需要不断进行重新评估?

我使用的一种调优是-server标志。


问题答案:

我当前工作的一部分是大型Java应用程序的维护和供给,该Java应用程序设计为运行有大量内存(当前约为8
Gb),这主要是由于正在进行的大量缓存数据计算所致。我使用标准GC设置进行了初始部署,主要是因为没有一种简单的方法来模拟全倾斜运行的生产环境。

在接下来的几个月中,我将分阶段自定义GC设置。通常,最大的可用旋钮似乎是在调节增量gc的频率和幅度-
最大的改进是将较大的周期性gc换成了较小且更频繁的gc。但是我们绝对能够看到性能的提高。

我不会发布我的特定设置,因为a)它们特定于我们的设置,b)因为我没有方便的设置:)。但总的来说,我发现的是

  • 在调整默认gc设置方面已经做了很多工作。 几乎 总是默认值比我做的任何调整都要好。
  • 至少对我而言,gc调整实际上值得的情况非常极端,以至于无法尝试对其进行仿真,因此我不得不通过实验和逐步进行。


 类似资料:
  • 问题内容: 我知道在PHP中您不必释放内存。垃圾收集器到达了吗? 问题答案: 是的,这里有一篇不错的文章描述了它的陷阱。在PHP> 5.3.0中,还有gc_enable函数。

  • 问题内容: 我有一个按24x6时间表运行的应用程序。当前,运行几天后,会自动执行Full GC(通常在一天中的繁忙时间),这会对用户响应时间产生负面影响。 我想做的是强制使用Full GC(也许是在每晚的午夜,在非常短的使用时间内),以防止它在白天发生。我已经尝试过System.gc(),但是它似乎无法保证何时会发生Full GC,甚至不会发生。有这样做的方法吗? 版本信息: Java™SE运行时

  • 在我们的kafka broker设置中,GC平均需要20毫秒,但随机增加到1-2秒。极端情况持续9秒。这种情况的发生频率相当随机。平均每天发生15次。我尝试过使用GCEasy,但没有给出任何见解。我的内存使用率为20%,但进程仍然使用交换,尽管内存可用。感谢您对如何将其最小化的任何意见 JVM选择: GC日志:

  • 垃圾回收 我们对生产中花了很多时间来调整垃圾回收。垃圾回收的关注点与Java大致相似,尽管一些惯用的Scala代码比起惯用的Java代码会容易产生更多(短暂的)垃圾——函数式风格的副产品。Hotspot的分代垃圾收集通常使这不成问题,因为短暂的(short-lived)垃圾在大多情形下会被有效的释放掉。 在谈GC调优话题前,先看看这个Attila的报告,它阐述了我们在GC方面的一些经验。 Scal

  • 对于开发者来说,JavaScript 的内存管理是自动的、无形的。我们创建的原始值、对象、函数……这一切都会占用内存。 当我们不再需要某个东西时会发生什么?JavaScript 引擎如何发现它并清理它? 可达性(Reachability) JavaScript 中主要的内存管理概念是 可达性。 简而言之,“可达”值是那些以某种方式可访问或可用的值。它们一定是存储在内存中的。 这里列出固有的可达值的

  • 垃圾收集,引用计数,显式分配 和所有的现代语言一样,OCaml提供垃圾收集器,所以你不用像C/C++一样显式地分配和释放内存。 JWZ在他的文章 "Java sucks" rant(Java蛋疼(怒)!): 第一个好家伙是Java没有 free()。其他的都没有所谓了。这几乎掩盖了所有的缺点,不管有多糟糕, 这个有点让后续文档基本都没有意义了,但是...(译注:但是啥大家自己看吧) OCaml的垃