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

对垃圾回收器的改进方案

  •  
  •   ncisoft · 4 天前 via iPhone · 7850 次点击

    我有一个软件设计模式的设计,用途是减轻垃圾回收的压力,能使得垃圾回收更加轻量和平滑,减少对内存的消耗和暂停时间。可用在支持分代垃圾回收器的语言,如 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  
       4 天前
    这个和开发针对瓶颈自己优化代码的区别和优势是什么呢?
    Ayanokouji
        2
    Ayanokouji  
       4 天前
    和选择 zgc 有什么优势
    iyiluo
        3
    iyiluo  
       4 天前
    要重构源码,这有点 low 啊,妥妥的侵入操作
    ncisoft
        4
    ncisoft  
    OP
       4 天前 via iPhone
    @cannotagreemore 这是针对 GC 做的优化,你可以理解为 Oracle SQL 的 hints

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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