MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    如何以较低的内存占用运行mirai

    使用交流
    3
    7
    824
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • I-love-study
      I-love-study 最后由 编辑

      在使用 hotspot 作为 jvm 的 java 的时候,即使在刚开始运行的时候,也会占用约240Mb的内存。将其换成 openj9,虽然说降低了 30% 的内存,但也还是占用了差不多 168Mb 的内存
      所以想在这里跟大家询问一下,有什么办法能够以较低的内存占用运行mirai

      1 条回复 最后回复 回复 引用 0
      • RainChan
        RainChan 摸鱼 最后由 编辑

        使用32位jre

        I-love-study 1 条回复 最后回复 回复 引用 0
        • I-love-study
          I-love-study @RainChan 最后由 编辑

          @RainChan
          试了一下,发现32位的hotspot内存占用甚至比64位的openj9还要高
          (32位hotspot: 177Mb, 64位openj9: 163Mb)
          (因为32位openj9不知道哪里找所以没测)

          1 条回复 最后回复 回复 引用 0
          • wssy001
            wssy001 ⭐2021⭐ 最后由 wssy001 编辑

            你可能需要对JVM下手。搞不好得干掉JVM。我之前试过用GraalVM来编译我的Mirai Core项目(编译成二进制可执行文件),但试验了几天发现它不支持Mirai。
            以下全为我个人猜想↓↓↓
            如果能使用GraalVM编译Mirai且机器人成功登录后,内存(不是硬盘占用,而是RAM占用)占用50MB左右(理想环境:Mac OS 10.14.6 + SpringBoot 2.6.4 + mirai core 2.6.7 + spring-native 0.11.3)

            1 条回复 最后回复 回复 引用 0
            • I-love-study
              I-love-study 最后由 编辑

              刚刚发现更离谱的
              openj9 64位 的 java 在运行一段时间后内存直接下降到131Mb(要是内存不够可能继续往下降
              hotspot 32位 的 java 则会只下降到 168Mb,维持稳定

              1 条回复 最后回复 回复 引用 0
              • I-love-study
                I-love-study 最后由 编辑

                挖一下自己的坟,2.13之后,mirai可以直接 kotlin/native 了。不知道直接编译的话会不会对内存占用有所改观。
                (注:鄙人不会怎么用 kotlin/native,所以不太清楚)

                wssy001 1 条回复 最后回复 回复 引用 0
                • wssy001
                  wssy001 ⭐2021⭐ @I-love-study 最后由 wssy001 编辑

                  @I-love-study 我去年的猜想正确 ,要想mirai运行时降低内存占用就得干掉JVM(Hotspot),方式有两种:
                  1:可以换VM编译
                  2:移植mirai协议至其他语言
                  我采用的是方式1,成功地用GraalVM编译mirai-core项目(用的是OpenJDK 19,Ubuntu 20.04 Docker镜像,mirai-core 2.13.3),机器人登录成功后内存仅占用60MB
                  同一套代码打成JAR包方式运行成功后则需要160MB的内存
                  但方式2可以做到把内存压到30MB以内,比如:mirai-go

                  1 条回复 最后回复 回复 引用 0
                  • 1 / 1
                  • First post
                    Last post
                  Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact