# 清除字符串内存缓存

function ReleaseString takes string str returns nothing
function ReleaseAllString takes nothing returns nothing
function GetCacheStringCount takes nothing returns integer

function DumpAllString takes string filename returns integer

1
2
3
4
5
6

# 描述

清除魔兽 jass 虚拟机里缓存的字符串 解决游戏后期字符串太多导致游戏卡顿的问题

  • ReleaseAllString 做了特殊处理 不处理 jass 全局变量 局部变量 哈希表里的字符串 能安全使用

  • ReleaseString 没判定 字符串是否被引用, 需要小心使用。

  • DumpAllString 将现存的字符串 输出到文件里

  • 顺便修复了 对玩家发送消息太多 导致卡顿的问题

# 例子

call ReleaseString("xxx.mdx")
1
local japi = require 'jass.japi'

if japi.GetCacheStringCount() > 10000 then 
    japi.ReleaseAllString()

    japi.DumpAllString("string.txt") --会在魔兽目录下生成当前的字符串
end 

1
2
3
4
5
6
7
8