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

geoip.dat 和 geosite.dat 占用内存也太大了,有优雅的方案吗

  •  
  •   f1ynnv2 · 1 天前 · 1317 次点击
    macOS 上用 clashmac, mihomo 内核,之前用的配置文件是基于某个订阅文件手搓的,列了上万条规则,domian-suffix, domain-keyword 之类的。

    今天偶然发现原来可以直接使用 geoip.dat 和 geosite.dat ,规则写起来非常优雅,只写了几十个规则就 OK 了。

    结果刚刚发现 clashmac 占用内存达到了 320M ,还以为出 bug 了,切换回原来自己手搓的上万条规则的配置文件立刻又降回 40M 。

    毕竟是笔记本,内存和耗电还得考虑在内,占用这么多内存有点夸张了。搜了一下大概知道原理其实就是 clash 会把两个 dat 全都载入内存加快查询速度,因为记录实在太多所以占内存。

    有一个方案是使用精简版的的 geoip_only_cn.dat, 但是也有个问题比如 telegram 其实有很多直连 ip 的还得依赖 cn 之外的 ip 来判断。

    不知道有没有什么更优雅的方案,既省内存又能复用这种 geoip.dat 的规则写法?
    16 条回复    2025-12-31 08:44:52 +08:00
    aerAzLNE
        1
    aerAzLNE  
       1 天前
    到底有多少规则要写……一个!cnip 兜底,常用的 AI/流媒体单独拉出来,去广告交给浏览器插件,小几十行几百行解决问题
    FrankAdler
        3
    FrankAdler  
       1 天前 via Android
    我是完全手搓规则,自己常访问的网站就那么多,配到打不开的配合 chrome 扩展 zeroomega 快速配置,用不了多少功夫
    FrankAdler
        4
    FrankAdler  
       1 天前 via Android
    如果用 singbox ,他把 geosite geoip 拆成了一个个小文件,你可以按需引入,应该可以节省非常多内存和硬盘
    Lightbright
        5
    Lightbright  
       1 天前
    @FrankAdler #4 geosite+geip 也就 13M ,mihomo 核心 33M ,singbox 核心 50M (个别平台 60M ),内存不知道,硬盘肯定是省不了的
    f1ynnv2
        6
    f1ynnv2  
    OP
       1 天前
    @MacTavish123 感谢,试了一下 geoip-lite.dat 和 geosite-lite.dat ,内存确实少了一半但还是占到了 160MB 。我打算准备两个配置文件了,一个是软路由上用的 openclash 就直接用完整版的 geoip/geosite ,反正配置够。笔记本上偶尔外出的还是手搓 rule-set 吧
    hefish
        7
    hefish  
       1 天前
    换台高配 mac 吧。。。
    电池的话。。。插着电用。
    flynaj
        8
    flynaj  
       1 天前 via Android
    在路由器上搞,轻轻松松,需要可以刷机的路由器 https://m.tb.cn/h.76Ek0QU?tk=qyO0fAEpbIX
    FrankAdler
        9
    FrankAdler  
       1 天前
    @Lightbright 夸张了,只有一个 60 的,其他都是 15m 上下 https://github.com/SagerNet/sing-box/releases/tag/v1.12.14
    valuedlute
        10
    valuedlute  
       1 天前
    rules:
    - IP-CIDR,223.5.5.5/32,DIRECT,no-resolve

    - GEOIP,lan,DIRECT,no-resolve
    - GEOSITE,private,DIRECT
    # - RULE-SET,advertising,REJECT
    - GEOSITE,google-gemini,🇯🇵 日本 01

    - GEOSITE,geolocation-!cn@cn,DIRECT
    - GEOIP,cn,DIRECT,no-resolve
    - GEOSITE,geolocation-cn@!cn,Proxy
    - GEOSITE,geolocation-cn,DIRECT
    - GEOSITE,geolocation-!cn,Proxy

    - MATCH,Proxy

    我从哪里抄的改了下 好像也不同特别复杂 advertising 自己找个就行
    Lightbright
        11
    Lightbright  
       1 天前
    @FrankAdler 你解压再看看,这里基本都是有压缩的
    IamJ
        12
    IamJ  
       1 天前
    规则集是目前比较好的方案
    jamme
        13
    jamme  
       1 天前
    https://wiki.metacubex.one/config/rule-providers/

    想要细分的话,可以自己写规则集,甚至可以直接自己搭一个 converter 服务,然后订阅自己的转换地址,一些熟知、主流的工具基本都支持转换,哪怕手机、平板、PC 和 Mac 使用的工具都不相同,这样可以一劳永逸,还可以创建自定义 list 去维护自己想要的分流规则。
    f1ynnv2
        14
    f1ynnv2  
    OP
       19 小时 47 分钟前
    @valuedlute 这种使用 GEOIP 和 GEOSITE 讲法来写规则的确实简洁,但是 GEOIP 和 GEOSITE 两个数据包需要一直载入内存,内存占用会特别高,我提到的就是这个问题,占了 320MB 内存。即使使用 geoip-lite 和 geosite-lite 也会占到 160MB 。台式机或者软路由确实无所谓,但是笔记本一方面要考虑内存占用更要考虑耗电
    f1ynnv2
        15
    f1ynnv2  
    OP
       19 小时 43 分钟前
    @jamme 感谢,昨天研究了一晚上,也确定是使用这种方案。一些比较大的规则集直接引用别人写好的 mrs ,自己定义规则集就直接用 yaml 。目前简单折腾了一下内存已经在 46M 左右了
    guzzhao
        16
    guzzhao  
       19 小时 22 分钟前
    win11 mihomo 占用 38.9mb 也还可以吧 可能是我的规则简单


    - GEOSITE,github,🚀 节点选择
    - GEOSITE,win-update,DIRECT
    - GEOSITE,microsoft@cn,DIRECT
    - GEOSITE,microsoft,microsoft
    - GEOIP,lan,DIRECT
    - GEOIP,private,DIRECT
    - GEOIP,CN,DIRECT
    - GEOSITE,private,DIRECT
    - GEOSITE,CN,DIRECT
    - MATCH,🐟 漏网之鱼
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:07 · PVG 04:07 · LAX 12:07 · JFK 15:07
    ♥ Do have faith in what you're doing.