【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

揭开 GC 算法的面纱:揭秘内存管理的幕后功臣 (gc算法有哪些)

用户投稿2024-04-08热门资讯38

在现代编程语言和软件开发中,内存管理至关重要,因为它使程序能够高效地使用内存资源。废品回收 (GC) 算法是内存管理中的关键机制,它自动释放不再被程序使用的内存空间。

GC 算法的类型

有几种不同的 GC 算法,每种算法都有其独特的优点和缺点。以下是其中一些最常见的 GC 算法: 揭开 GC 算法的面纱:揭秘内存管理的幕后功臣 (gc算法有哪些) 第1张
  • 标记清除算法:这种算法首先识别不再被引用的对象,然后遍历这些对象并将它们从内存中删除。
  • 引用计数算法:这种算法跟踪每个对象的引用计数,当引用计数下降到 0 时,就会释放对象。

gc是什么意思啊?

GC有多层含义,一是计算机术语,指GabageCollection;二是网络用语,支持的意思;三是网络域中的GC,就是“全局目录”GlobalCatalog;四是科研用语,即GasChromatography(气相色谱法)。 详见

JVM 技术详解:常见的 GC 算法(Parallel/CMS/G1)

学习了 GC 算法的相关概念之后,我们将介绍在 JVM 中这些算法的具体实现。首先要记住的是,大多数 JVM 都需要使用两种不同的 GC 算法——一种用来清理年轻代,另一种用来清理老年代。

我们可以选择 JVM 内置的各种算法。如果不通过参数明确指定废品收集算法,则会使用相应 JDK 版本的默认实现。本章会详细介绍各种算法的实现原理。

串行 GC 对年轻代使用 mark-copy(标记—复制)算法,对老年代使用 mark-sweep-compact(标记—清除—整理)算法。

两者都是单线程的废品收集器,不能进行并行处理,所以都会触发全线暂停(STW),停止所有的应用线程。

因此这种 GC 算法不能充分利用多核 CPU。不管有多少 CPU 内核,JVM 在废品收集时都只能使用单个核心。

要启用此款收集器,只需要指定一个 JVM 启动参数即可,同时对年轻代和老年代生效:

该选项只适合几百 MB 堆内存的 JVM,而且是单核 CPU 时比较有用。

对于服务器端来说,因为一般是多个 CPU 内核,并不推荐使用,除非确实需要限制 JVM 所使用的资源。大多数服务器端应用部署在多核平台上,选择 串行 GC 就意味着人为地限制了系统资源的使用,会导致资源闲置,多余的 CPU 资源也不能用增加业务处理的吞吐量。

关于串行废品收集器的日志内容,我们在后面的内容《GC 日志解读与分析》之中进行详细的讲解。

并行废品收集器这一类组合,在年轻代使用“标记—复制(mark-copy)算法”,在老年代使用“标记—清除—整理(mark-sweep-compact)算法”。年轻代和老年代的废品回收都会触发 STW 事件,暂停所有的应用线程来执行废品收集。两者在执行“标记和复制/整理”阶段时都使用多个线程,因此得名“ Parallel ”。通过并行执行,使得 GC 时间大幅减少。

通过命令行参数-XX:ParallelGCThreads=NNN来指定 GC 线程数,其默认值为 CPU 核心数。可以通过下面的任意一组命令行参数来指定并行 GC:

并行废品收集器适用于多核服务器,主要目标是增加吞吐量。因为对系统资源的有效使用,能达到更高的吞吐量:

java中GC是什么?为什么要有GC?

GC是废品回收的意思(gabage collection),内存处理器是编程人员容易出现问题的地方,忘记或者错误的内存回收导致程序或者系统的不稳定甚至崩溃,java的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,java语言没有提供释放已分配内存的俄显示操作方法。 希望能帮到你,谢谢!

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

揭开 GC 算法的面纱:揭秘内存管理的幕后功臣 (gc算法有哪些) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!