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

完全垃圾回收机制是否会在旧发电机收集不满的情况下发生

罗河
2023-03-14

关于垃圾回收机制我有三个问题

>

  • 我正在研究我的应用程序中的垃圾收集,我可以注意到已经发生了完整的GC。通过研究GC日志,我可以发现旧gen甚至没有使用分配给它的一半内存。那么为什么会发生完全GC呢。JVM是否使用了其他算法来释放内存,即使旧的gen没有完全利用?

    可以称之为良好的GC趋势。我的意思是,如果每10-15分钟发生一次完整的GC,我可以调用应用程序使其处于良好状态。我想知道一个应用程序的理想GC应该是什么。我知道这在很大程度上取决于应用程序,但应该有一些东西可以称为理想。

  • 共有1个答案

    夏侯腾
    2023-03-14

    一个主要的收集可能有几个原因,在大多数情况下,您可以使用jstat-gccause查看原因。

    如果从您的应用程序或您使用并依赖于此调用的任何其他代码调用,则很少有原因是-System.gc()。-当达到旧的空间占用分数时-当发生PermGen集合时-根据收集器,您使用的CMS增量模式似乎会导致旧一代限制之前的主要集合。

    最有可能的系统。gc()是导致意外的主要集合的原因,请尝试使用标志-XX:DisableExcplicitGC,看看您是否仍然得到它们。

    --

    没有任何趋势可以描述所有用法。这应该基于您的需要。GC的工作方式是否会影响应用程序/服务的性能。你有没有长时间的停顿会降低你的吞吐量?你想要实现什么?最重要的是你产生的垃圾是什么?尝试分析堆转储,看看是否可以在优化收集器之前以某种方式减少数量。

    --

    这取决于您使用的标志、JVM的版本、您的操作系统等......在一般的GC人体工程学中,更具体地说,选项-XX: UseAdaptiveSizePolicy将负责您几代人的大小。

     类似资料:
    • 本文向大家介绍Python垃圾回收机制?相关面试题,主要包含被问及Python垃圾回收机制?时的应答技巧和注意事项,需要的朋友参考一下 引用计数 标记清除 分代回收  

    • 本文向大家介绍JS的垃圾回收机制?相关面试题,主要包含被问及JS的垃圾回收机制?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: GC(garbage collection),GC执行时,中断代码,停止其他操作,遍历所有对象,对于不可访问的对象进行回收,在V8引擎中使用两种优化方法, 分代回收,2、增量GC,目的是通过对象的使用频率,存在时长来区分新生代和老生代对象,多回收新生代区,少回收老

    • 主要内容:总结通过前几节对可利用空间表进行动态存储管理的介绍,运行机制可以概括为: 当用户发出申请空间的请求后,系统向用户分配内存;用户运行结束释放存储空间后,系统回收内存。这两部操作都是在用户给出明确的指令后,系统对存储空间进行有效地分配和回收。 但是在实际使用过程中,有时会因为用户申请了空间,但是在使用完成后没有向系统发出释放的指令,导致存储空间既没有被使用也没有被回收,变为了 无用单元或者会产生 悬挂访问

    • Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。 1 引用计数 PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象

    • 本文向大家介绍C#开发中的垃圾回收机制简析,包括了C#开发中的垃圾回收机制简析的使用技巧和注意事项,需要的朋友参考一下 GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管

    • 本文向大家介绍理解Python垃圾回收机制,包括了理解Python垃圾回收机制的使用技巧和注意事项,需要的朋友参考一下 一.垃圾回收机制 Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。 在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存。 执行f1()会循环输出这样的结果,而且进程占用的内存基本不会变动 c1=ClassA