首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Elixir

    GC 性能

    什么是? 根据需求进行JVM规划和预 优化运行JVM运行环境(慢,卡顿) 解决JVM运行过程中出现的各种问题(OOM) ,从规划开始 ,从业务场景开始,没有业务场景的都是耍流氓 无监控(压力测试 扩容或,让它达到 用压测来确定 优化环境 有一个50万PV的资料类网站(从磁盘提取文档到内存)原服务器32位,1.5G 的堆,用户反馈网站比较缓慢,因此公司决定升级,新的服务器为64位,16G 的堆内存 PS -> PN + CMS 或者 G1 系统CPU经常100%,如何? (自定义ThreadFactory) jinfo pid jstat -gc 动态观察gc情况 / 阅读GC日志发现频繁GC / arthas观察 / jconsole/jvisualVM/ Jprofiler

    1.7K10编辑于 2022-11-05
  • 来自专栏盛开在夏天的太阳

    JVM--GC基础

    整体上来讲, 看了马士兵的预习视频以后, 感觉对GC又复习了一遍. 此次预习, 主要目的是7号晚上会有一个JVM的课程, 全称也有几点感悟 1. 理论偏多, 也就是更多的是概念性的问题. 2. GC tuning(Generation) GC, 什么呢?      所以我们也是针对这部分. 仔细看, 新生代和老年代中间有虚线, 虚线代表组合. a. Eplison   目前,我们主要的是哪一块呢? Serial和Serial Old, Parallel Scavenge和Parallel Old.    我们使用的时候很少去手动设置 6. jvm第一步, 了解生产环境下的垃圾回收组合   a. JVM命令行参数的参考   b.

    51030编辑于 2022-05-06
  • 来自专栏Java

    Java GC详解

    Java GC详解 在Java应用程序中,垃圾回收(Garbage Collection,GC)是管理和释放内存的重要机制。良好的GC可以提高应用程序的性能和稳定性。 本文将深入探讨Java GC的原理、常用技巧以及应用场景,并提供详细的案例和代码示例。 1. GC概述 GC是通过调整JVM的参数和应用程序的设计来优化内存管理和垃圾回收机制,以减少GC的频率和影响,提高应用程序的性能和吞吐量。 2. GC原理 GC的核心原理是尽可能减少垃圾对象的产生,以及尽量降低GC的停顿时间和频率。常用的手段包括调整堆内存大小、选择合适的GC算法、优化对象的创建和销毁等。 3. 常用的GC技巧 调整堆内存大小: 根据应用程序的内存需求和性能要求,适当调整堆内存大小,避免过小导致频繁GC,也避免过大导致长时间的Full GC

    83710编辑于 2025-01-21
  • 来自专栏数据人生

    Java GC参数

    对于正常环境的服务来说 -server -Xms24G -Xmx24G -XX:PermSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70 对于备份服务器 -server -Xms4G -Xmx4G -XX:PermSize=512m -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=70 对于单独部署的服务 -server -Xms32G -Xmx32G -XX:PermSize=512m -XX:+UseG1GC

    59610编辑于 2022-09-29
  • 来自专栏Spark学习技巧

    spark系列之内存和GC

    一,基本概述 内存的使用主要有三个方面的考虑:对象的内存占用量(你可能希望整个数据集都适合内存),访问这些数据的开销,垃圾回收的负载。 2,测量GC的影响 GC的第一步是收集关于垃圾收集发生频率和GC花费的时间的统计信息。 3,高级GC 为了进一步调整垃圾收集,我们首先需要了解一些关于JVM内存管理的基本信息<详细的请看:JVM的垃圾回收算法>: 1),java的堆内存分为两个区域新生代和老年代。 最后当老年代接近满的时候,会触发full GC。 Spark应用程序GC的目标是,确保生命周期比较长的RDD保存在老年代,新生代有足够的空间保存生命周期比较短的对象。 经验表明,GC调整的效果取决于您的应用程序和可用的内存量。下面的链接里有更多的在线描述的的选项,但在高层次上,管理GC的全面发生频率有助于减少开销。

    5.8K100发布于 2018-01-30
  • 来自专栏大数据成神之路

    HBase|HBase + G1GC 性能

    先传送门一下,之前在HBaseConAsia2017分享过一个G1GC的PPT: http://openinx.github.io/2012/01/01/my-share/ 首先,对G1算法不熟悉的同学 为了便于统计G1GC的日志信息,我们需要开启以下所有的G1参数: -Xmx30g -Xms30g -XX:MaxDirectMemorySize=30g -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions =1 -XX:G1HeapRegionSize=32m -XX:G1MixedGCCountTarget=64 -XX:G1OldCSetRegionThresholdPercent=5 其中重点需要的参数主要有 G1NewSizePercent :G1的Young区大小是通过算法来自适应确定的, 也就是根据之前Young区GC的耗时来确定之后的Young大小,如果耗时过长,则小Young区,耗时过短,则大Young 后面只需要通过工具自动分析gc日志即可.

    2.5K21发布于 2019-10-15
  • 来自专栏程序猿的大杂烩

    JVM层GC(下)

    GC日志格式 本文是 JVM层GC(上) 的后续,在上一篇文章中,我们介绍了JVM的内存结构、常见的垃圾回收算法以及垃圾收集器和不同收集器中的一些GC参数。 但是光知道一些参数是没用的,我们需要能够从GC的日志中去分析可以的地方,这样才能使用这些参数去进行相应的调整,所以本小节将介绍一下不同收集器的GC日志格式。 ---- Parallel GC GC无外乎以下三个步骤: 打印GC日志 根据日志得到关键性能指标 分析GC原因,调整JVM参数 Parallel GC的指导原则: 除非确定,否则不要设置最大堆内存 关于Parallel GC就先介绍到这,实际上调都是需要经验来积累的,不是一蹴而就的,所以这里也只是给出一些的步骤、方式而已。 ---- G1 在上一小节中,我们介绍了Parallel GC,而在本小节中,将介绍一下G1收集器的

    1.2K20发布于 2020-09-23
  • 来自专栏盛开在夏天的太阳

    JVM--GC2

    参开资料: 1. https://blog.csdn.net/liaynling/article/details/81251870 一. java jvm 参数 -Xms -Xmx -Xmn -Xss Full GC:指对堆内存整体进行垃圾收集(包含新生代,老年代,永久代),有时可以理解为仅是Major GC,又可以理解为Major GC + Minor GC,因为概念理解上的差异我们理解Full GC 3)设置过堆大小之后,可以根据程序创建对象的频率来调整新生代的内存大小,如果程序中创建新对象的频率比较搞可以适当大新生代,但不要盲目调整,因为新生代的大小对JVM 及系统性能影响较大,Java 官方推荐配置为整个堆大小的 ,但是具体的操作系统会给一个限制,这个限制一般是 2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了 总结: JVM 此时会触发FullGC 二. jvm性能常用的命令 1. top命令. 

    51520编辑于 2022-05-06
  • 来自专栏程序猿的大杂烩

    JVM层GC(上)

    JVM内存结构简介(jdk1.8) JVM层的GC是生产环境上必不可少的一个环节,因为我们需要确定这个进程可以占用多少内存,以及设定一些参数的阀值。 想要进行GC,我们首先需要简单了解下JVM的内存结构,Java虚拟机的规范文档如下: https://docs.oracle.com/javase/specs/jvms/se8/html/index.html 区,默认20%) -XX:AdaptiveSizeDecrementScaleFactor=< D >(减少,默认4%) ---- 了解了并行收集器后,我们来简单看看CMS收集器其他的一些特性以及相关参数 重新标记,STW 5.CMS concurrent sweep:并发清除 6.CMS concurrent-reset:并发重置 CMS的缺点: CPU敏感 会产生浮动垃圾 会产生空间碎片 CMS的相关参数 : 1.响应时间 2.吞吐量 下一篇: JVM层GC(下)

    74330发布于 2020-09-23
  • 来自专栏Clive的技术分享

    Golang垃圾回收gc

    20) c = append(c, 1, 2, 3) fmt.Println(c) time.Sleep(1 * time.Second) } 命令行调用go程序代码,输出gc 信息到日志 GODEBUG=gctrace=1 go run test.go 2> log.file 123 [0 0 0 0 0 0 0 0 0 0 1 2 3] 1 gc 1 @0.030s 0% : 0.036+0.47+0.11 ms clock, 0.14+0.16/0.33/0.91+0.44 ms cpu, 4->4->0 MB, 5 MB goal, 4 P gc 2 @0.052s 3%: 1.6+1.2+0.25 ms clock, 6.5+1.5/2.4/0+1.0 ms cpu, 4->4->1 MB, 5 MB goal, 4 P gc 4 @0.089s 4%: 0.10 +0.50+0.035 ms clock, 0.023+0.055/0.38/0.94+0.14 ms cpu, 4->4->0 MB, 5 MB goal, 4 P gc 6 @0.102s 4%:

    1.5K10发布于 2018-11-21
  • 来自专栏devops

    【架构实战】JVMGC日志分析与参数

    一、为什么需要JVMJava应用运行在JVM上,垃圾回收(GC)是影响性能的关键因素:GC带来的问题:STW(StopTheWorld)导致应用停顿频繁GC浪费CPU资源内存分配不合理导致频繁GCOOM (内存溢出)导致应用崩溃的目标:降低GC停顿时间(<200ms)提高吞吐量(>99%)避免OOM二、垃圾回收器详解1.垃圾回收器对比回收器线程数适用场景停顿时间Serial单线程简单高效小内存(<100MB MaxMetaspaceSizeUnabletocreatenewnativethread线程太多减少线程数DirectbuffermemoryNIO内存不足增大-XX:MaxDirectMemorySize六、性能实战 global:scrape_interval:15sscrape_configs:-job_name:'jvm'static_configs:-targets:['localhost:7071']八、总结JVM是 Java性能优化的核心:选择回收器:G1适合大多数场景合理配置内存:避免频繁GC分析GC日志:定位问题根源监控持续:及时发现异常最佳实践:先使用默认配置,观察GC行为根据GC日志调整参数避免过度做好监控和告警个人观点

    11310编辑于 2026-04-12
  • 来自专栏程序那些事

    GC到底是什么

    简介 我们经常会听到甚至需要自己动手去做GC。那么GC的目的到底是什么呢?让程序跑得更快?让GC消耗更少的资源?还是让程序更加稳定? 如果我们不去设置这些值,那么对GC性能比较有影响的参数和他们的默认值有哪些呢? 01 GC的选择 我们知道JVM中的GC有很多种,不同的GC选择对java程序的性能影响还是比较大的。 我们看一下G1的参数。 G1是基于分代技术的,其实JVM还在开发一些不再基于分代技术的GC算法,比如ZGC,我们可以根据需要来选择适合我们的GC算法。 02 GC的最大线程个数 GC是由专门的GC线程来执行的,并不是说GC线程越多越好,这个默认线程的最大值是由heap size和可用的CPU资源动态决定的。 01 最大暂停时间 单次GC的暂停时间是一个统计平均值,因为单次GC的时间其实是不可控的,但是取了平均值,GC就可以动态去调整heap的大小,或者其他的一些GC参数,从而保证每次GC的时间不会超过这个平均值

    85131发布于 2020-08-20
  • 来自专栏小冷coding

    如何对GC算法进行呢?

    GC(Garbage Collection,垃圾收集)算法进行是一个涉及多个方面的复杂任务。 以下一些的方案: 分析GC日志: 开启GC日志记录功能,收集GC事件、堆内存使用、GC耗时等数据。 监控与: 在生产环境中持续监控GC性能和应用程序性能,关注GC频率、停顿时间、内存使用率等指标。 根据监控数据,定期评估GC效果,并根据需要进行调整。 此外,随着JVM版本的不断升级和GC算法的持续发展,我们还需要时刻关注最新的技术动态,及时将新的技术和方法应用到GC中,以提高系统的整体性能。 总之,GC是一个不断学习和实践的过程,只有不断积累经验,才能更好地应对各种复杂的GC问题,提升系统的稳定性和性能。

    71010编辑于 2024-04-26
  • 来自专栏Ceph对象存储方案

    RGW 的GC深入解析与

    什么是GC Garbage Collection缩写GC,简称垃圾回收。在RGW中GC一般都是指一些异步的磁盘空间回收操作,一般下面三种情况会发生GC。 1. 每个GCworker启动的时候都会有一个数字ID标识,这个ID其实就是对应到gc pool里面的Object的ID名称,GC的任务列表就存储在每个gc pool里面对应的Object的omap中,如果gc "1_" }; GC 流程概览图 最后一张图来总结整个GC的过程,其中涉及到几个和GC效率有直接关系的几个参数,大家可以根据各自线上情况去。 参数的几点心得 GC worker的数量由rgw_gc_max_objs来控制,设置这个参数的时候要考虑到你线上业务是否会有大量的GC操作,不要盲目调高。 ,可能就要大这个时长了。

    4.8K80发布于 2018-01-31
  • 来自专栏cwl_Java

    JVM性能-GC垃圾回收讲解

    简介:GC垃圾回收讲解 战略意义 能做出⼀个需求的同时也要懂得其对应的战略意义 为什么要垃圾回收? Java语⾔中⼀个显著的特点就是引⼊了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃⽽解。

    46430发布于 2019-12-20
  • 来自专栏Java后端技术栈cwnait

    Java 9 中的 GC 基础

    本文将主要讲解GC需要知道的一些基础知识,会涉及到一些GC的实现细节,但不会对实现细节做很全面的阐述,如果你看完本文之后,能对GC有一个大致的认识,那本文的写作目的也就达到了。 本文将包含以下内容: GC的作用范围 GC负责的事情 JVM中的4种GC G1的一些细节 使用Java 9正式版对G1进行测试 一些简单的GC方法 一、GC的作用范围 要谈GC的作用范围,首先要谈JVM 如果Eden的对象分配失败,出发Minor GC。 如果Minor GC完成后还不够,则直接分配到老年代。 一些简单的GC方法 1. 在Parallel里,可以通过参数调节最大停止时间(-XX:MaxGCPauseMillis,默认无设置)和吞吐量(-XX:GCTimeRatio,默认值是99,即最大使用1%的时间来做垃圾回收)来 G1提供了丰富的基于不同目的的可调的参数,列表如下: 参数 描述 -XX:+G1UseAdaptiveConcRefinement, 调节G1 refinement所使用的资源。

    79840发布于 2019-08-02
  • 来自专栏java一日一条

    Java 9 中的 GC 基础

    本文将主要讲解GC需要知道的一些基础知识,会涉及到一些GC的实现细节,但不会对实现细节做很全面的阐述,如果你看完本文之后,能对GC有一个大致的认识,那本文的写作目的也就达到了。 本文将包含以下内容: GC的作用范围 GC负责的事情 JVM中的4种GC G1的一些细节 使用Java 9正式版对G1进行测试 一些简单的GC方法 一、GC的作用范围 要谈GC的作用范围,首先要谈JVM 如果Eden的对象分配失败,出发Minor GC。 如果Minor GC完成后还不够,则直接分配到老年代。 一些简单的GC方法 1. 在Parallel里,可以通过参数调节最大停止时间(-XX:MaxGCPauseMillis,默认无设置)和吞吐量(-XX:GCTimeRatio,默认值是99,即最大使用1%的时间来做垃圾回收)来 G1提供了丰富的基于不同目的的可调的参数,列表如下: ?

    71820发布于 2018-09-14
  • Java 性能:优化 GC 线程设置

    1 咋查找应用程序的 GC 线程数量进行线程转储分析来确定应用程序的 GC 线程数量:从生产服务器捕获thread dump使用thread dump分析工具进行分析立即显示 GC 线程数量,如图还可通过 2 咋设置 GC 线程数量? GC 暂停时间增加,吞吐量下降过多的 GC 线程会使垃圾回收过程低效,导致更长的 GC 暂停时间,应用程序会被暂时中断,延长的暂停时间可能会造成明显的延迟或卡顿。 过少的 GC 线程同样会给 Java 应用程序带来问题。原因如下:垃圾回收时间延长:GC 线程过少时,垃圾回收所需时间变长,线程少,处理时间长,GC 暂停时间也随之延长。 =n在生产环境中应用这些更改前,先研究应用程序的 GC 行为,收集并分析 GC 日志。

    63210编辑于 2024-09-17
  • 来自专栏架构师之旅

    Java9中的GC基础

    本文将主要讲解GC需要知道的一些基础知识,会涉及到一些GC的实现细节,但不会对实现细节做很全面的阐述,如果你看完本文之后,能对GC有一个大致的认识,那本文的写作目的也就达到了。 本文将包含以下内容: GC的作用范围 GC负责的事情 JVM中的4种GC G1的一些细节 使用Java 9正式版对G1进行测试 一些简单的GC方法 一、GC的作用范围 要谈GC的作用范围,首先要谈JVM 如果Eden的对象分配失败,出发Minor GC。 如果Minor GC完成后还不够,则直接分配到老年代。 一些简单的GC方法 1. 在Parallel里,可以通过参数调节最大停止时间(-XX:MaxGCPauseMillis,默认无设置)和吞吐量(-XX:GCTimeRatio,默认值是99,即最大使用1%的时间来做垃圾回收)来 G1提供了丰富的基于不同目的的可调的参数,列表如下: 参数 描述 -XX:+G1UseAdaptiveConcRefinement, 调节G1 refinement所使用的资源。

    86670发布于 2018-01-30
  • 来自专栏黑泽君的专栏

    大数据技术之_19_Spark学习_07_Spark 性能 + 数据倾斜 + 运行资源 + 程序开发 + Shuffle + GC + Spark 企业应用案例

    GC。打印 GC 信息:-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps。 而且这些策略只能推迟 Full GC 的到来,如果是长期运行的应用,Parallel GC 的意义就非常有限了。因此,本文中不会再对 Parallel GC 进行。 1.6.5 根据日志进一步   在让 G1 GC 跑起来之后,我们下一步就是需要根据 GC log,来进一步进行性能。首先,我们要让 JVM 记录比较详细的 GC 日志. 对于大量依赖于内存计算的 Spark 应用,GC 显得尤为重要。在发现 GC 问题的时候,不要着急调试 GC。 当然,GC不是绝对的,不同的应用会有不同应用的特性,掌握根据 GC 日志进行的方法,才能以不变应万变。

    3.4K21发布于 2019-05-14
领券