- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这个问题是基于我对 link 的 Java 垃圾收集器部分的理解看起来 jvm 默认情况下在 Windows 7 上使用“Parallel GC”,正如我确认的那样 -XX:+PrintCommandLineFlags -version。这篇文章还说
The parallel garbage collector uses multiple threads to perform the young generation garbage collection. This collector should be used when a lot of work need to be done and long pauses are acceptable
我不确定并行 GC 使用哪个收集器来收集永久空间?
我也想不出可以接受长时间停顿的应用程序(会导致响应速度降低)。任何人都希望减少 GC 的暂停时间并使应用尽可能地响应。
然后我阅读了Concurrent Mark Sweep (CMS) Collector
,它收集了tenured generation
CMS 表示它需要低暂停时间并且可以与垃圾回收共享资源
。
我的问题是最不应该的 Web 应用程序使用 Concurrent Mark Sweep (CMS) Collector 是因为它的响应能力。?决定,但在通过此链接后,我觉得我应该将默认 GC 类型更改为并发标记扫描 (CMS) 收集器。有什么想法/见解吗?
此外,我认为如果我们同时使用 CMS 收集器和并行收集器,应用程序可能是最好的,其中 CMS 用于老年代和并行 fpr年轻一代
最佳答案
i am not sure which collector is used for tenured space collection by Parallel GC?
离开this页面,如果你使用并行 GC,则并行清除收集器用于年轻代,并行标记/清除收集器用于老年代(也称为老一代)。所以我猜答案是“Parallel GC 用于 Parallel GC 的永久空间收集”。有点循环陈述,但我认为这是有道理的。
Also i could not think of applications where long pauses are acceptable(will cause less responsiveness). Anyone would like to less pauses for GC and make app as responsive as it can.
“长时间停顿”是相对的,是否可以接受取决于应用程序的类型及其用途。需要快速用户交互的应用程序(例如游戏)可能需要较短的暂停时间,而长时间运行的应用程序几乎没有用户交互(通宵批处理作业、可以运行几天的处理作业、可能运行很长时间的服务器)时间段等),或者不需要快速用户交互(文字处理器?但是谁用 Java 编写文字处理器?)几乎没有严格的暂停要求,所以暂停是好的那些。此外,暂停不是唯一要考虑的 GC 因素,因此即使暂停是可以的,也有其他原因会选择暂停时间较长的 GC。我会在下面进一步解释。
My question is should not most of web applications use Concurrent Mark Sweep (CMS) Collector because of its responsiveness.?
CMS 收集器有缺点。在你提到的文章中,有这一行:
Normally the concurrent low pause collector does not copy or compact the live objects. A garbage collection is done without moving the live objects.
所以没有堆压缩会导致堆碎片,这可能对性能有害。 This帖子指出了另一个缺点(我不确定这篇帖子到底有多可靠,但乍一看似乎相当不错):
A more important disadvantage of the CMS collector is related to the fact that it cannot be started when the Old generation heap is full. Once the Old generation is full, it is too late for the CMS and it must then fall back to the usual stop-the-world strategy (announced by a “concurrent mode failure” in the GC log).
...
The biggest disadvantage of the CMS, however, is related to the fact that it does not compact the Old generation heap. It therefore carries the risk of heap fragmentation and severe operations degradation over time.
...
It is obvious that with these settings the JVM worked well for almost 14 hours under loadtest conditions (in production and with lower load this treacherously benign period may last much longer). Then suddenly there were very long GC pauses which actually stopped the JVM for about half of the remaining time. There were not only attempts to clean up the mess in the Old generation which lasted more than 10 seconds but even New generation GC pauses were in the seconds range because the collector spent a lot of time searching for space in the Old generation when it tried to promote objects from new to Old generation.
博文中有更多详细信息,您可能应该阅读这些内容,因为这里的引述之外还有很多内容以及一些精彩的演示。但要指出的是,CMS 收集器并不是一个通用的收集器。它也有它的缺点,这可能会导致程序员选择不同的收集器。对于短时间运行的应用程序,将它用作默认值可能没问题,但对于长时间运行的应用程序,这种行为将非常糟糕...
Further i think application can be best if we use CMS Collector and parallel collector together where CMS is used for old generation and parallel fpr younger generation
当您将 -XX:+UseConcMarkSweepGC
参数传递给您的 VM 时,这实际上是默认模式。但如上所述,您可能真的需要花一些时间来考虑要使用哪种收集器。在不考虑您的用例的情况下选择收集器可能不是一个好主意。 (旁注:我以为我从 Oracle 看到了一些关于如何决定使用什么 GC 的文档,但我再也找不到了...)
此外,如果您有 Java 7u4 或更高版本,您可能需要考虑 Shiny 的新 G1 收集器。它应该是 CMS 收集器的替代品。
关于java - 使用并发标记扫描 GC 收集器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24593300/
虽然我在 reactjs 组件(组件名称为 renderLocationLink)的渲染方法返回的 html 中包含了 a 标签的 onclick 处理程序,但渲染正确地发生了 onclick 处理程
我必须以 docx 格式存储一些文档,但无法忍受使用 msword:我想编辑某种纯文本标记,除了基于 XML 的东西(我也不喜欢那样)和从/到那个到/从 docx 转换。 有什么选择吗? 编辑:由于人
有一个页面,其 anchor 标记在延迟后变得可点击。我想使用用户脚本在可点击后点击它。 页面加载时,HTML 源代码为: Download 延迟一段时间后,#button 变
我正在将 XML 文件解析为 pandas 数据帧。使用下面的代码我可以成功获取所有内容,但是这使用了完整 XML 的编辑版本。完整的 XML 在主数据表之上有一堆摘要数据,请参阅完整的 XML he
目前我正在研究 xml.sax 解析器来解析 xml 文件 假设我有以下代码 filepath = 'users/file.xml' try: parser = xml.sax.make_pa
我正在尝试构建一种语法来解释用户输入的文本,搜索引擎风格。它将支持 AND、OR、NOT 和 ANDNOT bool 运算符。我几乎所有东西都在工作,但我想添加一个规则,将引用字符串之外的两个相邻关键
我遇到了 Terraform EKS 标记的问题,并且似乎没有找到可行的解决方案来在创建新集群时标记所有 VPC 子网。 提供一些上下文:我们有一个 AWS VPC,我们在其中将多个 EKS 集群部署
我是xpath的新手,对此了解不多。我知道有一种方法可以使用xpath在xml / xhtml文件中查找特定标签。就我而言,我试图找到第一个(a)链接元素。不幸的是,我的xpath字符串[// a [
我在索引页上的产品卡上遇到问题。在产品卡内部,我有 Vue 组件来渲染表单(数量和添加到购物车按钮)。当我单击“添加到购物车”按钮时,我得到了预期的结果。响应被发送到根 vue 组件,然后我看到产品已
html setMouse(true)} onMouseEnter={() => setMouse(false)} className='resume-container'> CSS .resum
我在组件中有一组枚举,如下所示: type TOption = (clVisible, clVisibleAlways, clRenderable, clEditable); TOptions
是否有出于性能考虑的javadoc标签? 人们可以想象: /** * ...other javadoc tags... * @perform Expected to run in O(n) tim
html setMouse(true)} onMouseEnter={() => setMouse(false)} className='resume-container'> CSS .resum
我有一个包含多个小子图的图。目标是当且仅当子图中的所有节点都是蓝色时,才将子图中的所有蓝色节点标记为红色。如果子图中的一个节点具有不同的颜色,绿色,那么我们将不会更改该子图中节点的颜色。 这是我正在使
我正在使用 json-ld 开发事件标记以包含在确认电子邮件中。 我的一些事件会定期重复发生。但是,最新的 Schema.org 规范不支持重复发生的事件,因此我遵循了此处提供的建议:http://l
我创建了一个插件,可以添加带有相应行号的标记。现在,这很棒,因为它现在显示在“标记” View 中。有没有办法当我双击标记上的一行时,它会转到标记指示的行? 谢谢。 最佳答案 双击“标记” View
是否有一个插件具有与 Facebook 标记类似的行为? 它的特别之处在于它具有: 在键入的单词之间自动完成 特殊输出的 html(与另一个输入字段同步) 最佳答案 您可以使用jquery提及输入pl
有没有更好的方法来读取java文件中的 token ?我目前正在使用 StringTokenizer 来分割 token 。但在大多数情况下,它的效率可能非常低,因为您必须逐个 token 地读取 t
我想知道是否有某种方法可以标记文件来识别该文件是否包含x。 考虑以下示例: 在批量转换过程中,我正在创建一个日志文件,其中列出了各个转换的成功/失败。 所以流程如下: 开始转换过程 创建名为batch
我一直在尝试模拟点击标签,但这并没有像我需要的那样工作。我的 anchor 标记看起来像这样 Download this pic 正常的 $("a").click() 或 trigger('cli
我是一名优秀的程序员,十分优秀!