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

Java 太胖?

  •  1
     
  •   Trumeet
    Trumeet 2019-01-04 13:34:54 +08:00 8216 次点击
    这是一个创建于 2473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    楼主小土豆上跑两个 Java Netty 服务 + 邮件服务RAM 快受不了了...... 有什么方式降低 Netty 内存占用吗?

    如上图,一大串全是一个程式。求教一下 V2er,因为都知道 V2er 是万能的( xd

    第 1 条附言    2019-01-05 12:44:23 +08:00

    多谢各位 V2er,目前做法是 -Xms64m 压缩一下内存使用。外加了一块 2G 的 Swap 以便备用。

    61 条回复    2019-01-06 02:34:44 +08:00
    orangeade
        1
    orangeade  
       2019-01-04 13:45:13 +08:00 via Android
    dir + mipush ?
    Java 就是以吃内存出名吧,要不换其他编程语言重写,对比看看?
    Mohanson
        2
    Mohanson  
       2019-01-04 13:47:27 +08:00 via Android   8
    别问,问就 go
    chendy
        3
    chendy  
       2019-01-04 13:52:38 +08:00
    加参数限制内存使用
    lihongjie0209
        4
    lihongjie0209  
       2019-01-04 13:53:47 +08:00
    jvm 调优了解一下
    jason19659
        5
    jason19659  
       2019-01-04 13:55:38 +08:00
    增加虚拟内存
    Trumeet
        6
    Trumeet  
    OP
       2019-01-04 14:00:00 +08:00   1
    @Mohanson 就知道有吹 Go 的((
    Trumet
        7
    Trumeet  
    OP
       2019-01-04 14:00:29 +08:00
    @orangeade 诶诶诶... Dir + MiPush 还行吧((
    换语言成本太大了,刚开始转 Kotlin
    Trumeet
        8
    Trumeet  
    OP
       2019-01-04 14:01:06 +08:00
    @chendy 这个什么操作?限制了不会影响正常功能?
    Trumeet
        9
    Trumeet  
    OP
       2019-01-04 14:01:17 +08:00
    @lihongjie0209 吼高深哇...
    dk7952638
        10
    dk7952638  
       2019-01-04 14:05:13 +08:00
    十倍的性能换十倍的开发效率,java 从一开始就是在性能和开发效率之间寻找一个平衡点
    lihongjie0209
        11
    lihongjie0209  
       2019-01-04 14:08:21 +08:00
    @Trumeet 就是前面说的调整 jvm 参数, 复制粘贴就好了
    Tengdw
        12
    Tengdw  
       2019-01-04 14:28:46 +08:00
    根据 gc 曲线调整下堆内存大小看行不
    victorywangzhcn
        13
    victorywangzhcn  
       2019-01-04 14:43:13 +08:00
    看看 GraalVM ,现在能直接 native 化,非常小。传送门 https://github.com/cstancu/netty-native-demo
    sagaxu
        14
    sagaxu  
       2019-01-04 14:47:14 +08:00 via Android   1
    Netty 会用堆外内存,所以实际占用比 Xmx 设置的高。建议开 gclog,然后尝试不同的 Xmx,观察 gc 时间间隔,选择能接受的最低间隔。
    chanin
        15
    chanin  
       2019-01-04 14:54:23 +08:00
    又想简单方便,又想快速高效是不可能的,身为编程语言鄙视链条最低端的 java,需要接 RAM 受审判之眼
    Greendays
        16
    Greendays  
       2019-01-04 15:14:24 +08:00
    别问,问就加 RAM
    Finest
        17
    Finest  
       2019-01-04 15:24:21 +08:00
    Java 内存这块再省也省不了多少
    luosuosile
        18
    luosuosile  
       2019-01-04 15:41:20 +08:00
    java 是编程语言 鄙视链最低端吗??我以为 java 至少在鄙视链中游呢
    XIVN1987
        19
    XIVN1987  
       2019-01-04 15:46:13 +08:00
    是不是 JIT 的编程语言都比较费内存啊??
    sagaxu
        20
    sagaxu  
       2019-01-04 15:51:20 +08:00 via Android
    @XIVN1987 JIT 会额外吃掉一些,gc 也会吃掉一些,spring 那套东西再吃个几十 MB。JAVA 程序,最低 100M 起步。
    auxox
        21
    auxox  
       2019-01-04 15:59:38 +08:00
    没有设置 jvm 参数,那还不是有多少内存用多少内存
    passerbytiny
    &bsp;   22
    passerbytiny  
       2019-01-04 16:04:13 +08:00
    请设置 JVM 参数(-Xmx),JVM 申请的是进程独占内存,如果不设置,默认情况下,按照最小 25%物理内存,最大 50%物理内存去申请,4 个 java 进程就 GG,不管你加多少内存条。
    loveCoding
        23
    loveCoding  
       2019-01-04 16:20:19 +08:00
    -Xmx 加上堆内存限制,实际使用内存会比这个大一些,不复杂的话换 go 重写下也是可以的
    pursuer
        24
    pursuer  
       2019-01-04 16:24:25 +08:00
    不知道跑的什么服务,好多进程,可以整合到一个 JVM 进程里运行吗?
    murmur
        25
    murmur  
       2019-01-04 16:25:35 +08:00
    @luosuosile java 就是当年的美帝国主义,人人都在喊打倒美帝但是别人还是帝国啊
    misaka19000
        26
    misaka19000  
       2019-01-04 16:27:27 +08:00 via Android
    用 go 重写就好了
    lrh3321
        27
    lrh3321  
       2019-01-04 16:36:23 +08:00 via Android
    别问,问我就回用 c++重构一下。
    luozic
        28
    luozic  
       2019-01-04 16:53:18 +08:00 via iPhone
    go 快速重构一个,除非业务复杂,甚至可以上 nginx +lua 搞定。
    hackerwin7
        29
    hackerwin7  
       2019-01-04 17:01:31 +08:00 via iPhone
    JVM CDS
    huobazi
        30
    huobazi  
       2019-01-04 17:09:52 +08:00 via iPhone   1
    换 dotnet core
    fuchaofather
        31
    fuchaofather  
       2019-01-04 17:11:56 +08:00
    可以试下用 jvm 调优, 其实我个人觉得语言差别不是很大, 差的是写代码的
    byfar
        32
    byfar  
       2019-01-04 18:29:13 +08:00
    今年都没什么人推 Rust 了呢
    lancelock
        33
    lancelock  
       2019-01-04 19:32:21 +08:00
    你这什么字体啊?
    chenqh
        34
    chenqh  
       2019-01-04 19:36:19 +08:00
    731/1.65,有没有用满,怕什么?空那么多内存做什么?
    sticnarf
        35
    sticnarf  
       2019-01-04 19:43:21 +08:00
    LZ,你这些全是同一个进程的不同线程吧……总共占了 1.65G 的 8.9%也就是 150M 左右,这已经不能接受了吗?
    Trumeet
        36
    Trumeet  
    OP
       2019-01-05 00:58:05 +08:00
    @lihongjie0209 好的,多谢
    Trumeet
        37
    Trumeet  
    OP
       2019-01-05 00:58:25 +08:00
    @victorywangzhcn 这个我试过,Netty 跑不起来(
    Trumeet
        38
    Trumeet  
    OP
       2019-01-05 00:58:59 +08:00
    @sagaxu 好的,多谢(
    Trumeet
        39
    Trumeet  
    OP
       2019-01-05 00:59:43 +08:00
    @luosuosile 是啊。。最低好歹得是拍黄片啊( xd
    Trumeet
        40
    Trumeet  
    OP
       2019-01-05 01:00:28 +08:00
    @passerbytiny @loveCoding 多谢,我去看看
    Trumeet
        41
    Trumeet  
    OP
       2019-01-05 01:02:05 +08:00
    @sticnarf 这只是一部分,往下滚(我一般这么叫,滚动的意思,不要误解 2333 )还有一堆((
    liangdu
        42
    liangdu  
       2019-01-05 01:38:54 +08:00 via Android
    直接内存的默认大小为 xmx 减去一个 service,兄弟看着点调
    liangdu
        43
    liangdu  
       2019-01-05 01:41:18 +08:00 via Android
    减去一个 servivor 空间的大小(上面拼写错了,不好意思)
    feiyuanqiu
        44
    feiyuanqiu  
       2019-01-05 01:43:53 +08:00
    @lancelock #33 Operator Mono,这个字体最大的特色是它的斜体
    yanaraika
        45
    yanaraika  
       2019-01-05 05:01:42 +08:00 via Android
    算一下内存条和你花时间重构哪个贵
    Trumeet
        46
    Trumeet  
    OP
       2019-01-05 05:09:01 +08:00
    @yanaraika 服务器啊... 个人开发者花不起那个钱(
    yanaraika
        47
    yanaraika  
       2019-01-05 05:12:30 +08:00
    @Trumeet 那就调-Xmx 吧,你这个估计对 GC stop 也不敏感
    Trumeet
        48
    Trumeet  
    OP
       2019-01-05 05:13:24 +08:00
    @yanaraika 多谢,我看看
    realkenshinji
        49
    realkenshinji  
       2019-01-05 07:56:57 +08:00 via iPhone
    @dk7952638 然而开发效率现在来看也不高了
    KgM4gLtF0shViDH3
        50
    KgM4gLtF0shViDH3  
       2019-01-05 08:37:25 +08:00 via iPhone
    go 的开发效率真的不高……插入数组的方法都没有
    firebroo
        51
    firebroo  
       2019-01-05 10:32:50 +08:00 via Android
    不要说语言差别不大,c 艹重构一下就知道语言差别尽然这么大
    dk7952638
        52
    dk7952638  
       2019-01-05 10:37:25 +08:00
    @realkenshinji 这不你也知道是现在看来并不高,在当时那可是高的很。
    Camile
        53
    Camile  
       2019-01-05 12:02:49 +08:00
    别问,问就 Rust
    nekoyaki
        54
    nekoyaki  
       2019-01-05 12:09:44 +08:00
    htop 默认是把统一进程的不同线程全都显示出来的,你可以在 F2 》 Options 里把 Hide userland process threads 钩上,看到的结果就是单纯的“进程”了。不然就容易产生理解误区。
    Trumeet
        55
    Trumeet  
    OP
       2019-01-05 12:10:55 +08:00
    @nekoyaki 这样啊.. 多谢(
    nekoyaki
        56
    nekoyaki  
       2019-01-05 12:13:17 +08:00
    我比较奇怪的是为什么楼上只有一个人意识到这个问题是理解误区……
    zts1993
        57
    zts1993  
       2019-01-05 12:18:00 +08:00
    yuuta 最胖!
    别问,问就换狗浪
    janxin
        58
    janxin  
       2019-01-05 12:22:14 +08:00
    @byfar 好的,Rust 大法好,用 Rust 重写了解一下
    sjj050121014
        59
    sjj050121014  
       2019-01-05 13:28:51 +08:00
    线程开那么多干嘛,浪费内存和 cpu 时间,减一半线程好过加内存
    applehater
        60
    applehater  
       2019-01-06 01:13:46 +08:00
    @ynaraika 公司最近节流还真是从服务器减配开始了,真要去重构省资源来省钱。。。
    yanaraika
        61
    yanaraika  
       2019-01-06 02:34:44 +08:00 via Android
    @applehater 工资太低 or 服务实在写的太烂
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     912 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:52 PVG 02:52 LAX 11:52 JFK 14:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86