V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ncisoft
V2EX  ›  Java

对垃圾回收器的改进方案

  •  
  •   ncisoft · 10 天前 via iPhone · 8284 次点击

    我有一个软件设计模式的设计,用途是减轻垃圾回收的压力,能使得垃圾回收更加轻量和平滑,减少对内存的消耗和暂停时间。可用在支持分代垃圾回收器的语言,如 Java c# nodejs golang Lua 5.4 。

    我追踪研究此项技术有 20 年了吧,在我有限的认知范围内,确信是世界首创。

    主要目标市场将会是 Java ,现在工业界的 Java 实例对内存和 GC 的消耗很惊人,已经出现 TB 级的工业实践,业界最领先的 JVM 实现是 Azul C4 商业软件,官方宣称能在 1-8TB 堆上达到无暂停。JVM 厂商这几年一直在努力推进垃圾回收器的实现。这是 JVM 行业解决该问题的主要技术途径。而我的方案则是一个完全不同的设计方法。

    我构想的技术实现方式,可以做到以 Java OOP 方式开发系统,达到或接近函数式编程语言的垃圾回收表现,而无需转换到 JVM 平台上的 Scala 函数式语言:尽量交给 MINOR GC 来回收垃圾,更少的 FULL GC 。而现代 JVM 从 CMS 开始,MINOR GC 就已经极为高效。

    在 Java 的使用上相当简单,依据一个开发范式,通过 profiling 工具找出关键方法,对这部分代码进行简单重构,就可以把既有代码转换成对 GC 友好的应用。不仅可以用在 Java backend ,同样可以用于安卓 APP 。

    有別于借助 JVM 垃圾回收器的改进提升,我的方案明显更可控可预测,同时成本也更低。

    欢迎开发人员、软件外包公司、中小企业、各用 Java 支持业务系统的公司、安卓开发公司接洽商业合作,详情请联系李先生 leeygx#gmail.com

    143 条回复    2024-06-28 16:56:53 +08:00
    1  2  
    cannotagreemore
        1
    cannotagreemore  
       10 天前
    这个和开发针对瓶颈自己优化代码的区别和优势是什么呢?
    Ayanokouji
        2
    Ayanokouji  
       10 天前
    和选择 zgc 有什么优势
    iyiluo
        3
    iyiluo  
       10 天前
    要重构源码,这有点 low 啊,妥妥的侵入操作
    ncisoft
        4
    ncisoft  
    OP
       10 天前 via iPhone
    @cannotagreemore 这是针对 GC 做的优化,你可以理解为 Oracle SQL 的 hints

    在我的设计出来之前,优化不到 GC 层
    ncisoft
        5
    ncisoft  
    OP
       10 天前 via iPhone
    @iyiluo Azul C4 高大上,就是贵
    Yanlongli
        6
    Yanlongli  
       10 天前
    围观大佬
    yuk1no
        7
    yuk1no  
       10 天前 via iPhone
    有 metric 对比看看吗?
    ncisoft
        8
    ncisoft  
    OP
       10 天前 via iPhone
    @Ayanokouji 不同层面的东西,也可以视为 zgc 的补充
    ncisoft
        9
    ncisoft  
    OP
       10 天前 via iPhone
    @yuk1no 过两天发出来
    iosyyy
        10
    iosyyy  
       10 天前
    talk is easy
    nothingistrue
        11
    nothingistrue  
       10 天前
    动源代码不动垃圾回收器或者 JVM ,我不信你真得能有提升。不上测试报告,只能假定你在瞎说。
    rrfeng
        12
    rrfeng  
       10 天前
    我觉得是吹牛逼。
    ncisoft
        13
    ncisoft  
    OP
       10 天前 via iPhone
    @nothingistrue 后续打算出一些软件的 benchmark ,会从 GitHub 上找,可能有 Elasticsearch ,拭目以待吧
    NightFlame
        14
    NightFlame  
       10 天前
    发点案例看看呢
    ncisoft
        15
    ncisoft  
    OP
       10 天前 via iPhone
    @NightFlame 还没有案例呢,我打算找一些释放出源代码的软件做对比测试,欢迎推荐
    dabai0806
        16
    dabai0806  
       10 天前
    设计模式重构代码优化 gc, 这对已有项目改造成本也太高了

    而且我也不觉得设计模式优化 gc 是个靠谱的事
    ncisoft
        17
    ncisoft  
    OP
       10 天前 via iPhone
    @dabai0806 看公司自己的选择,我说的重构只针对 profile 出来关键方法,而且简单机械,不复杂

    所以说是世界首创嘛,一般人想不到这里^_^
    52boobs
        18
    52boobs  
       10 天前 via Android   ❤️ 1
    talk is cheap,show me the code
    cinlen
        19
    cinlen  
       10 天前   ❤️ 2
    benchmark 没出来就开始找商业合作了?
    carity
        20
    carity  
       10 天前
    测试结果没有,应用案例没有,Demo 也没有,就找合作了?
    Ericcccccccc
        21
    Ericcccccccc  
       10 天前
    G1 现在的 stw 应该完全够用了啊。
    tianshuang
        22
    tianshuang  
       10 天前
    世界首创?
    xubeiyou
        23
    xubeiyou  
       10 天前
    talk is cheap,show me the code
    ncisoft
        24
    ncisoft  
    OP
       10 天前 via iPhone
    @tianshuang 在我有限的认知范围内,确信是世界首创,你在网上见识过类似的技术吗
    ncisoft
        25
    ncisoft  
    OP
       10 天前 via iPhone
    @Ericcccccccc 新版 idea 就是用的 g1 ,不卡顿吗
    june4
        26
    june4  
       10 天前
    简单机械的话,不能让程序自动处理吗
    ncisoft
        27
    ncisoft  
    OP
       10 天前 via iPhone
    @june4 抱歉,暂时还没想到怎么让程序自动处理
    546L5LiK6ZOt
        28
    546L5LiK6ZOt  
       10 天前 via iPhone
    只要不 new 对象就不会有 gc ,log4j 和 disruptor 就有 gc free 的设计,op 也是类似思路?
    ncisoft
        29
    ncisoft  
    OP
       10 天前 via iPhone
    @546L5LiK6ZOt 我鼓励 new 对象,Scala 少 new 对象了吗?

    在垃圾回收器拉垮的年代,有的是人通过缓存对象的方式以试图减轻 GC 的压力,但这么做太反人性了
    brant2ai
        30
    brant2ai  
       10 天前
    这如果是真的,可能会把 Java 重新拉回宝座。话说你实际测试过没,有测试数据吗
    ncisoft
        31
    ncisoft  
    OP
       10 天前 via iPhone
    @brant2ai 过几天发测试数据,在寻找测试标的,只能找开放源代码的,可能会是 Elasticsearch ,Netbean/Eclipse 也是选项, 你有什么推荐吗?
    cannotagreemore
        32
    cannotagreemore  
       10 天前   ❤️ 1
    没有数据也没有 demo ,怎么看都有点民科的味道
    ncisoft
        33
    ncisoft  
    OP
       10 天前 via iPhone
    @cannotagreemore 我是学院路上 985 CS 毕业,有可能是民科?
    brant2ai
        34
    brant2ai  
       10 天前   ❤️ 1
    @brant2ai 多测几个吧,数量多了才有说服力
    otakustay
        35
    otakustay  
       10 天前   ❤️ 1
    约等于什么都没说就找**商务**合作感觉太激进了,可以附带一些典型 GC 测试场景、典型算法、典型 spring 服务下启用和没启用的 profiling 差异数据,一般商务使用一定是在有数据支撑的情况下才会展开的,不至于瞎来
    dragonfsky1
        36
    dragonfsky1  
       10 天前
    计算机也有民科了吗
    Ashe007
        37
    Ashe007  
       10 天前 via iPhone   ❤️ 5
    你咋不拿个图灵奖?世界首创,整个 Oracle 的程序员都没想出来,全世界苦于 GC 问题的公司没想出来,给你想出来了
    Ericcccccccc
        38
    Ericcccccccc  
       10 天前
    @ncisoft 卡顿是 g1 造成的。新的 g1 回收,暂停时间 10ms 以内,你感觉卡顿是它造成的吗?
    zjp
        39
    zjp  
       10 天前
    请教 JAVA 现在是如何应对 GC stop-the-world 导致的服务暂停?
    ncisoft · 2016-06-01 03:13:01
    有几年没跟踪技术了,也不知道在内存越来越便宜、堆越来越大的今天,JAVA 有什么好的解决方案了吗?比如 G1 实际效果如何?


    16 到现在才 8 年吧...
    idealcitier
        40
    idealcitier  
       10 天前
    mark, 期待你的代码。
    julyclyde
        41
    julyclyde  
       10 天前
    现在卷 gc 还有意思么?
    先不说现在对性能的追求已经超过人的实际需要了
    单说大家都用 java8 ,你再改进有啥用?
    wxf666
        42
    wxf666  
       10 天前
    Idea 、Pycharm 社区版,是开源的吗?

    经你改造后,预计能提速多少,减少内存占用多少呢?

    ncisoft
        43
    ncisoft  
    OP
       10 天前 via iPhone
    @Ashe007 Sun JDK 团队本来就不怎么样,一直搞不清楚重点。你没做过突破天际的事情,不代表别人也做不到。

    我发这个帖子,说明了存在这么一条 approach 。以中国人的做题能力,跟着抄作业也不是多难的事情。
    ncisoft
        44
    ncisoft  
    OP
       10 天前 via iPhone
    @Ericcccccccc 一知乎上大堆人有 64G 内存才用得起 idea ,不是 GC 问题还能是什么
    ncisoft
        45
    ncisoft  
    OP
       10 天前 via iPhone
    @julyclyde 我的方案对 Java 8 也有效,可以这么说 CMS 以上都有效,是加强
    ncisoft
        46
    ncisoft  
    OP
       10 天前 via iPhone
    @zjp 我在这之前就不研究 GC 了吗?
    ncisoft
        47
    ncisoft  
    OP
       10 天前 via iPhone
    @wxf666 JB 是商业公司,目前不好预测
    ncisoft
        48
    ncisoft  
    OP
       10 天前 via iPhone
    @wxf666 我先入为主了,idea 社区版还真是开源的,必须 RESPECT JB 公司

    https://github.com/JetBrains/intellij-community
    wszbdyyy
        49
    wszbdyyy  
       10 天前
    给楼主提供一个新的商业化思路。

    楼主可以将一些开源的,使用量大的软件或者类库,按照你的方案进行改造,生成“高性能”版本,然后直接卖。如果性能改进明显,相信是有市场的。
    ncisoft
        50
    ncisoft  
    OP
       10 天前 via iPhone
    @wszbdyyy 你想我吃官司? GPL 分分钟让你踩缝纫机,只有 BSD 等几种协议才能这么干
    wszbdyyy
        51
    wszbdyyy  
       10 天前
    GPL 不会影响你商业化,开源即可。
    ncisoft
        52
    ncisoft  
    OP
       10 天前 via iPhone
    @wszbdyyy 我的思想开源了还赚毛线
    dragonfsky1
        53
    dragonfsky1  
       10 天前 via Android   ❤️ 3
    都是开发,谁会相信这种天马行空的东西。计算机民科最难了,没代码没 demo 只能是笑话
    cloudyplain
        54
    cloudyplain  
       9 天前 via iPhone
    minor gc 就高效吗? 大型业务项目 g1 经常 100-200ms 停顿,full gc 出现就是事故,profiling ?给 async profiler 贡献过代码吗? 这种哗众取宠的标题才是搞笑。
    jdgui
        55
    jdgui  
       9 天前
    建议换个赛道,你说自己能够发明永动机比较现实。
    mightybruce
        56
    mightybruce  
       9 天前
    编故事编的不错,建议让 AI 修改修改一下, 这样故事更能打动人。
    lindt99cocoa
        57
    lindt99cocoa  
       9 天前
    talk is cheap. show me the code
    ncisoft
        58
    ncisoft  
    OP
       9 天前 via iPhone
    @cloudyplain 我还没给 OpenJDK 贡献过代码呢,谁说 profiling 就要用 async profiler ?自己独立写一套不可以吗

    思想禁锢成这样还是安心当码农吧
    ncisoft
        59
    ncisoft  
    OP
       9 天前 via iPhone
    @mightybruce
    @jdgui 思想如此禁锢,我说了有这么一条 approach ,以中国人的做题能力,怎么还能让你想到永动机?
    ncisoft
        60
    ncisoft  
    OP
       9 天前 via iPhone
    @otakustay 我负责过 CMCC 某个项目的架构设计、性能测试,支持上亿终端,我会不懂压测?
    panlatent
        61
    panlatent  
       9 天前 via Android   ❤️ 1
    不懂 Java 也没深入研究过 GC 。不踩 OP ,但是我看过任何性能调优的文章和言论,好像都不是主题贴的风格。既没有简述原理,也没有列举数据,反而直接整了个商务合作。

    既然依靠设计模式做性能优化,那么哪些客户需要性能?是多大群体?都要学习的你模式还需要重构核心代码?且你的模式是付费闭源,具体实施起来肯定困难重重。比如第三方库和包怎么办。
    NickX
        62
    NickX  
       9 天前
    talk is cheap. show me the code
    ncisoft
        63
    ncisoft  
    OP
       9 天前 via iPhone
    @panlatent 测试数据过几天我会发一个简版的出来
    nuk
        64
    nuk  
       9 天前
    好奇原理是啥,直接标记分代数据吗
    xue777hua
        65
    xue777hua  
       9 天前 via iPhone   ❤️ 3
    在对冲基金做过高频交易 楼主说的方案 业界对 gc 敏感的一直都在这么做 而且都遵遵循类似的范式来尽量 minor gc 所以并不认为有多大市场。
    也就是
    不需要 gc 的不在乎这点
    需要在乎 gc 的早就已经用那一套方法论在优化了
    真正需要极致优化的 谁用 java 啊 c++真香
    andytao
        66
    andytao  
       9 天前
    别给 JAVA 整了,先给仓颉实现吧,借它的东风雄起。。。
    kyuuseiryuu
        67
    kyuuseiryuu  
       9 天前 via iPhone   ❤️ 1
    对于软件开发商来说,花钱买机器和花钱买你 GC 都是花钱。
    买你的产品还多了修改代码的要求。改一次代码就要做一次回归测试,开发成本又在这里。不如花钱堆机器来得简单无脑成本低。

    对于开发商的技术部门来说,如果需要修改代码,侵入性大,对整个系统架构有影响,太耦合了。

    对于 toB 开发商的客户来说,他们拿不到源码,也用不上。


    感觉目标客户范围很小呢。
    windsage
        68
    windsage  
       9 天前
    android 上的 cc 就是参考自 shenodoah gc ,在服务器上有 zgc ,停顿更少的,你要直接减少 gc ,编译成二进制不好么?干嘛套个虚拟机呢。
    corcre
        69
    corcre  
       9 天前
    @kyuuseiryuu 简单来说就是大客户用不上, 小客户用不起🐶
    shawnsh
        70
    shawnsh  
       9 天前 via Android
    追踪技术有 20 年了,你今年多大了
    ncisoft
        71
    ncisoft  
    OP
       9 天前 via iPhone
    @andytao 不认识华为的人,这有点难呢
    sagaxu
        72
    sagaxu  
       9 天前
    盲猜是通过 proiling 找出长期生存对象,重构代码,不让它们辗转到老年代
    ncisoft
        73
    ncisoft  
    OP
       9 天前 via iPhone
    @windsage AOT 并不能消灭 GC
    LieEar
        74
    LieEar  
       9 天前
    有没有具体测试?你在这干聊谁会相信
    ncisoft
        75
    ncisoft  
    OP
       9 天前 via iPhone
    @sagaxu 盲猜果然不靠谱,怎么说也是我 20 年长考的精华,不可能用这么笨拙的方法
    ncisoft
        76
    ncisoft  
    OP
       9 天前 via iPhone
    @kyuuseiryuu 我的方案其实可以理解为软件专利,没什么源代码的,只不过我没钱申请不起欧美专利
    ncisoft
        77
    ncisoft  
    OP
       9 天前 via iPhone
    @shawnsh 我同龄朋友有办理退休手续的
    windsage
        78
    windsage  
       9 天前
    @ncisoft 我说的是直接编译成 so 库这种二进制的机器码
    ThinkCat
        79
    ThinkCat  
       9 天前   ❤️ 1
    talk is cheap ,如果是作为商业机密,可以申请专利保护,如果是科研,可以出论文,如果只是验证,请出一下测试结果。我也有一套系统,完美解决了现代 IM 的所有难点和痛点,效率和安全性超过 tg ,且占用资源极低。一旦商业化,将对现有 IM 行业带来降维式的打击,如果想要合作,请私信联系我。
    ncisoft
        80
    ncisoft  
    OP
       9 天前 via iPhone
    @windsage 你去看看 golang 吧,编译成二进制就没有了虚拟机了吗?
    HojiOShi
        81
    HojiOShi  
       9 天前   ❤️ 1
    有点意思,先插个眼看看。虽然说研究了 20 年这点肯定是在吹牛逼。

    https://www.v2ex.com/t/236283
    ncisoft
        82
    ncisoft  
    OP
       9 天前 via iPhone
    @ThinkCat 你知道申请一个美国软件专利全部费用需要多少钱吗?再考虑欧美打包一条龙, 我是没钱办不起
    windsage
        83
    windsage  
       9 天前
    @ncisoft 虚拟机的意义不就是为了多平台的可移植性嘛?如果你不考虑这个问题,只兼顾某种架构下的,完全不需要呀。
    ThinkCat
        84
    ThinkCat  
       9 天前
    @ncisoft 你知道如果专利价值高的话,能赚多少钱么? 如果你这个是真的,未来价值 1 亿,现在要花 100w 去申请专利。你干不干?
    ncisoft
        85
    ncisoft  
    OP
       9 天前 via iPhone
    @windsage 我都说了去看看 golang ,具体到 AMD64 Linux ,编译成二进制自然有虚拟机。Google 的工程师一定不是废材吧
    ncisoft
        86
    ncisoft  
    OP
       9 天前 via iPhone
    @ThinkCat 问题是我现在没有 100 万,其他的还用谈吗?
    Chinsung
        87
    Chinsung  
       9 天前   ❤️ 1
    《他改变了 gc 》
    ncisoft
        88
    ncisoft  
    OP
       9 天前 via iPhone
    @HojiOShi 我最早接触 Java 还是 1.1 ,最开始关注 GC 调优是 1.4 ,你查查有没有 20 年,v 友们还真是无知呢
    dragonfsky1
        89
    dragonfsky1  
       9 天前
    吹了这么久还是无代码无 demo ,hhh
    huangzhe8263
        90
    huangzhe8263  
       9 天前
    好像知乎上天天看到你
    转来 v2 了?
    minoic
        91
    minoic  
       9 天前
    @ncisoft #85 go 有虚拟机? “It is important to understand, however, that Go’s runtime does not include a virtual machine, such as is provided by the Java runtime.” -- https://go.dev/doc/faq
    ncisoft
        92
    ncisoft  
    OP
       9 天前 via iPhone
    @huangzhe8263 跟你一样,两栖,我用 v 站比知乎要早,我在知乎没发过那么多帖子,不可能天天看到我
    ncisoft
        93
    ncisoft  
    OP
       9 天前 via iPhone
    @minoic golang 编译成二进制有没有 GC ?
    devliu1
        94
    devliu1  
       9 天前 via Android
    show me the paper
    NeroKamin
        95
    NeroKamin  
       9 天前
    @ncisoft #93 虚拟机和 gc 两码事这都拎不清?
    mightybruce
        96
    mightybruce  
       9 天前
    当你说 golang 有虚拟机的时候, 我就绷不住了。

    软件专利,你要笑掉大牙, 软件只有算法以及一些设计有专利这一说。

    建议去医院看一下有没有问题。
    ncisoft
        97
    ncisoft  
    OP
       9 天前 via iPhone
    @devliu1 我在认真考虑是不是让给在美国当大学教授的大学同学发 paper ,都是上下铺重点,应该一个月内能有决定。据他说在美国,GC 是学术届的热门话题
    ncisoft
        98
    ncisoft  
    OP
       9 天前 via iPhone
    @NeroKamin 我干嘛要分清楚?你自己去看看会话上下文
    635925926
        99
    635925926  
       9 天前
    就这?我发明的算法,改进 java 之后,都不需要 gc 。
    ncisoft
        100
    ncisoft  
    OP
       9 天前 via iPhone
    @devliu1 上下铺兄弟,前面打错字
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2609 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:58 · PVG 21:58 · LAX 06:58 · JFK 09:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.