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

一个脑洞: JVM 是否可以把方法区在某种配置或者情况下放到磁盘上以此来减少内存空间

  •  
  •   liudaolunhuibl · 2021-05-13 10:28:31 +08:00 · 2239 次点击
    这是一个创建于 1051 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 、操作系统的虚拟内存? 当然操作系统提供了虚拟内存的功能但是这个依赖于操作系统,能不能 JVM 自己来做这个事情。 2 、磁盘 IO 的速度比内存读写慢了很多? 实际上优化一下磁盘 IO 和用 SSD 的吧这两者的差别不会特别大,放在磁盘上就是“时间换空间”,如果你的系统对时间不是特别敏感但是内存特别大的话也许可以考虑? 3 、GC 遍历对象的时候如果有对象在磁盘会增加 GC 的时间和性能消耗? 所以目前考虑的是把不参与 GC 的方法区放上去

    14 条回复    2021-05-13 13:51:25 +08:00
    GM
        1
    GM  
       2021-05-13 11:06:57 +08:00
    先问几个问题:
    方法区占用空间多少 M ?
    占用的这些内存空间,折算成本值人民币多少钱?
    为了省这点空间和金钱,损失巨大的性能提升,值不值?
    ch2
        2
    ch2  
       2021-05-13 11:07:36 +08:00
    你要自己处理缺页异常?
    privatetan
        3
    privatetan  
       2021-05-13 11:07:52 +08:00
    可以研读 java 虚拟机规范
    ignor
        4
    ignor  
       2021-05-13 11:13:01 +08:00 via Android
    什么样的系统方法区会占内存特别大?
    yitingbai
        5
    yitingbai  
       2021-05-13 11:16:53 +08:00
    class 能占用多少空间啊!!! 可以说是微乎其微, 占内存的都是数据, 你把数据都缓存到磁盘上, 按需加载不就行了
    nightwitch
        6
    nightwitch  
       2021-05-13 11:20:22 +08:00
    相当于要在用户态重新实现类似页表的机制。
    不具备可行性,因为内核查找页表是有硬件加速的,用软件模拟能慢出天际。
    surbomfla
        7
    surbomfla  
       2021-05-13 11:22:54 +08:00 via Android
    没必要,出了问题谁背锅。真的想要减少内存占用直接换语言
    charlie21
        8
    charlie21  
       2021-05-13 11:25:15 +08:00   ❤️ 1
    向落后进化
    liudaolunhuibl
        9
    liudaolunhuibl  
    OP
       2021-05-13 11:31:53 +08:00
    @yitingbai 方法区只有类信息?没有常量??
    liudaolunhuibl
        10
    liudaolunhuibl  
    OP
       2021-05-13 11:32:19 +08:00
    @privatetan jvms 上没有相关内容
    liudaolunhuibl
        11
    liudaolunhuibl  
    OP
       2021-05-13 11:33:02 +08:00
    @GM meta Space 默认最小是 20M 最大是无限大,一般设定都是 1024,1 个 G
    Kiske
        12
    Kiske  
       2021-05-13 11:50:48 +08:00
    Samsung 980 Pro 2TB 连续读取速度 7000MB/s 连续写入速度 5100MB/s
    芝奇 Trident Z DDR4 3200MHz 内存读取 30951MB/s 写入 31529MB/s
    liudaolunhuibl
        13
    liudaolunhuibl  
    OP
       2021-05-13 13:33:42 +08:00
    @Kiske 10 倍以内对于某些情况下是否是可以接受的?
    olaloong
        14
    olaloong  
       2021-05-13 13:51:25 +08:00
    @liudaolunhuibl 醒醒,10 倍是连续读写
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4934 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 05:38 · PVG 13:38 · LAX 22:38 · JFK 01:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.