nc
V2EX  ›  Java

Java 确实是内存高效的

  •  1
     
  •   nc ·
    networkcats · 2 days ago · 5134 views

    TLDR:

    37 replies    2026-06-16 08:26:38 +08:00
    xuld
        1
    xuld  
       2 days ago
    JVM 是内存高效的,但真正的性能杀手是 Java 的框架。比如 Java 标准库读取一次文件需要用到 File, Stream, TextReader 等好多一次性小对象,这些都需要浪费时间去申请、清理内存,而相比 Go 实现同样的功能,压根不需要这么申请多辅助对象。JVM 分配和回收内存优化再好,也比不过像 Go 这样,从根本上避免分配和回收内存。
    defaw
        2
    defaw  
       2 days ago
    hadoop ,spark 强不等于 spring 强,springboot 那内存占用确实挺难绷的
    cybort
        3
    cybort  
       2 days ago via Android   ❤️ 1
    不能这么比,虚拟机内部的管理应该跟 C 写的资源池去比较,不能直接跟系统层面的调用去比
    zls3201
        4
    zls3201  
       2 days ago
    对于 Coding Agent 而言 go 这种不要太友好,型能够,复杂度不好,框架也不重
    Java+Spring 哪个不重?再加一堆中间件
    daysv
        5
    daysv  
       2 days ago
    现在内存多贵你们知道吗? 就国内 spring 满天飞这套,从 java 换到别的语言,甚至是 nodejs 能节省多少钱你们知道吗?
    ryougifujino
        6
    ryougifujino  
       2 days ago
    “由于 RAM 的成本相对低于 CPU 算力”,以前或许是这样,现在并非
    NO9527
        7
    NO9527  
       2 days ago
    java 本身内存占用就多,再加个 spring 就更多了
    DeWjjj
        8
    DeWjjj  
    PRO
       2 days ago
    问题是 java 好招人啊,我加个机子才多少钱,一个人多少钱。
    kneo
        9
    kneo  
       2 days ago via Android
    是是,我小时候他们就这么说的。现在终于有人信啦?
    likooo125802023
        10
    likooo125802023  
       2 days ago
    @ryougifujino 以后 RAM 会跌回去的,急啥。
    voidmnwzp
        11
    voidmnwzp  
       2 days ago via iPhone
    @DeWjjj 现在 ai 时代,你会什么语言根本不重要了,反正都是 ai 写,为什么换更省内存,代码简单方便 review 的 golang 或者极致性能的 rust/c++,java 这个语言在未来注定是被淘汰的,javaer 所谓的生态强大在 ai 面前更是不值一提,重构这种事 ai 最擅长了
    DeWjjj
        12
    DeWjjj  
    PRO
       2 days ago
    @voidmnwzp 怎么可能嘞,java 的集群解决方案,是技术栈选择里面很难被摈弃的一块。
    wakarimasen
        13
    wakarimasen  
       2 days ago via Android
    无内鬼,来个 ArrayList<Integer> 笑话
    kkbblzq
        14
    kkbblzq  
       2 days ago
    这个结论只适用于大数据场景吧;偏业务侧的应用,木桶短板通常也不在服务侧的 CPU 上,况且你占用的内存越大,访问内存需要的 cpu 周期也是越多的,结果可能是即占了内存,也不省 CPU 。
    dcsuibian
        15
    dcsuibian  
       2 days ago
    感觉好像上面已经开始跑题了
    单说 Memory Efficient ,我一开始以为指的是“同样一台机器塞下最多有用数据”,但其实看主题是它利用更多内存来降低 CPU 开销。但无论是哪个,我觉得都是成立的。只不过都是需要处理的数据量或业务量够大才能体现。

    说实话,作为一个 Javaer ,有时候确实会感觉内存占用多,但基本不会太在意这个。
    好不好写才是最重要的。
    lolo1
        16
    lolo1  
       2 days ago via Android
    java 被淘汰是迟早的事情
    unused
        17
    unused  
       2 days ago via Android
    意思是 C/C++ 就不能自己实现 allcator,就不能用空间换时间?
    seansong
        18
    seansong  
       2 days ago
    @DeWjjj “集群解决方案”,你大概率高估这个价值了,ai 时代,那点东西完全不值钱,更有效的编码效率和正确性才是王道,java 在这方面反倒不占优
    mightofcode
        19
    mightofcode  
       2 days ago
    再加十几个微服务 吃光内存美滋滋
    fovecifer
        20
    fovecifer  
       2 days ago
    作为普通开发者,你不要跟我讲这些,同样的功能,我用 go 开发,就比 java 内存占用少特别多!!!
    PS:作为一个 Java/C 入门,目前 Go/Java 双修的程序员的感想
    charles0
        21
    charles0  
       1 day ago
    所以为什么 C/C++不能自己通过 arena 分配内存呢?第 3 点不成立
    Domado
        22
    Domado  
       1 day ago
    占用内存多能解释为内存高效?偷换概念
    roundgis
        23
    roundgis  
       1 day ago via Android
    以前一个主机只运行一个应用 应用当然是占用内存越多越好 方便调度

    现在是上千个服务一起跑 要求内存不用时需要尽快释放 jvm 那种模式显得不合时宜了
    roundgis
        24
    roundgis  
       1 day ago via Android
    @DeWjjj 现在有 ai 加持 好招人这个优势没那么明显了
    bololobo
        25
    bololobo  
       1 day ago
    @voidmnwzp 从我入行起, 就在讲 "java 这个语言在未来注定是被淘汰的", 10 年过去了, 还在讲. 估计再过个 10 年, 也还会继续讲下去.
    james122333
        26
    james122333  
       1 day ago via Android
    工作用语言 基本上自己的项目是绝对不会用的 更喜欢迷你轻量的工具 哪怕性能没那么好甚至差 或一堆需要自己实现的功能 部署快验证除错快 古法编程友好 现有流行的都不轻量
    kennylam777
        27
    kennylam777  
       1 day ago via Android
    我也不想用 JVM ,但 ElasticSearch 真的香,好像暫時還沒取代品?
    byte10
        28
    byte10  
       1 day ago
    @fovecifer 可以试试 java 的 vert.x 内存应该会减少一些。当然绝对数值还是 GO 强,但应该会在同一个量级。
    kivmi
        29
    kivmi  
       1 day ago
    首先高效不高效,跟 java 无关,跟 JVM 有关;其次,JVM 所谓的内存高效,只是在分配小对象的高效,大对象能高效,更别说内存回收了?而且这种高效,C 、C++同样可以做到,难道只有 JVM 才能做到?
    seedhk
        30
    seedhk  
       1 day ago
    @wakarimasen 这是什么梗
    Topmax
        31
    Topmax  
       1 day ago
    @xuld 但是 Go 内存回收就垃圾多了
    shiloh595
        32
    shiloh595  
       1 day ago
    @bololobo 我们 Java 以后会怎样(悲)
    0x663
        33
    0x663  
       1 day ago
    @voidmnwzp 那为什么 Apache 团队不用 AI 重构 Flink Spark 呢
    Ipsum
        34
    Ipsum  
       20h 19m ago
    啊,想起了我司那个银行流水上报系统。就是个简单的爬虫,用的 spring boot 的微服务框架,居然要 20G 内存。
    fovecifer
        35
    fovecifer  
       17h 25m ago
    @byte10 早就不用 spring 那套了,用了好几年的 vertx,内存问题上确实有提升。但是跟你说的一样,绝对数值上还是 go 强。我始终坚持 java 主要还是生态,有些东西没有合适的替代品。
    byte10
        36
    byte10  
       2h 59m ago
    @fovecifer Quarkus‌底层也是 vertx ,而且很容易用 graalvm 去编译成可执行文件,内存应该会更低一些。不过运行起来后,估计也是差不多。

    vertx 的设计真的神啊,天生就是适合做微服务,可惜啊实际项目都是 spring😂,我很喜欢 vertx 这玩意。虚拟线程出来之后,可以直接封神了。
    fovecifer
        37
    fovecifer  
       2h 36m ago
    @byte10 综合起来看的话,我觉得 go 的心智压力要低于 vertx
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5846 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 144ms · UTC 03:03 · PVG 11:03 · LAX 20:03 · JFK 23:03
    ♥ Do have faith in what you're doing.