mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 22:30:04 +08:00
81 lines
3.8 KiB
Lua
Vendored
81 lines
3.8 KiB
Lua
Vendored
--
|
|
-- Show case of MemoryReferenceInfo.lua.
|
|
--
|
|
-- @filename Example.lua
|
|
-- @author WangYaoqi
|
|
-- @date 2017-05-04
|
|
|
|
local mri = require("plenary.profile.memory_profiler")
|
|
|
|
-- Set config.
|
|
mri.m_cConfig.m_bAllMemoryRefFileAddTime = false
|
|
--mri.m_cConfig.m_bSingleMemoryRefFileAddTime = false
|
|
--mri.m_cConfig.m_bComparedMemoryRefFileAddTime = false
|
|
|
|
-- 打印当前 Lua 虚拟机的所有内存引用快照到文件(或者某个对象的所有引用信息快照)到本地文件。
|
|
-- strSavePath - 快照保存路径,不包括文件名。
|
|
-- strExtraFileName - 添加额外的信息到文件名,可以为 "" 或者 nil。
|
|
-- nMaxRescords - 最多打印多少条记录,-1 打印所有记录。
|
|
-- strRootObjectName - 遍历的根节点对象名称,"" 或者 nil 时使用 tostring(cRootObject)
|
|
-- cRootObject - 遍历的根节点对象,默认为 nil 时使用 debug.getregistry()。
|
|
-- MemoryReferenceInfo.m_cMethods.DumpMemorySnapshot(strSavePath, strExtraFileName, nMaxRescords, strRootObjectName, cRootObject)
|
|
collectgarbage("collect")
|
|
mri.m_cMethods.DumpMemorySnapshot("./", "1-Before", -1)
|
|
|
|
-- Add a global variable.
|
|
local author =
|
|
{
|
|
Name = "yaukeywang",
|
|
Job = "Game Developer",
|
|
Hobby = "Game, Travel, Gym",
|
|
City = "Beijing",
|
|
Country = "China",
|
|
Ask = function (question)
|
|
return "My answer is for your question: " .. question .. "."
|
|
end
|
|
}
|
|
|
|
_G.Author = author
|
|
|
|
-- Dump memory snapshot again.
|
|
collectgarbage("collect")
|
|
mri.m_cMethods.DumpMemorySnapshot("./", "2-After", -1)
|
|
|
|
-- 打印当前 Lua 虚拟机中某一个对象的所有相关引用。
|
|
-- strSavePath - 快照保存路径,不包括文件名。
|
|
-- strExtraFileName - 添加额外的信息到文件名,可以为 "" 或者 nil。
|
|
-- nMaxRescords - 最多打印多少条记录,-1 打印所有记录。
|
|
-- strObjectName - 对象显示名称。
|
|
-- cObject - 对象实例。
|
|
-- MemoryReferenceInfo.m_cMethods.DumpMemorySnapshotSingleObject(strSavePath, strExtraFileName, nMaxRescords, strObjectName, cObject)
|
|
collectgarbage("collect")
|
|
mri.m_cMethods.DumpMemorySnapshotSingleObject("./", "SingleObjRef-Object", -1, "Author", _G.Author)
|
|
|
|
-- We can also find string references.
|
|
collectgarbage("collect")
|
|
mri.m_cMethods.DumpMemorySnapshotSingleObject("./", "SingleObjRef-String", -1, "Author Name", "yaukeywang")
|
|
|
|
-- 比较两份内存快照结果文件,打印文件 strResultFilePathAfter 相对于 strResultFilePathBefore 中新增的内容。
|
|
-- strSavePath - 快照保存路径,不包括文件名。
|
|
-- strExtraFileName - 添加额外的信息到文件名,可以为 "" 或者 nil。
|
|
-- nMaxRescords - 最多打印多少条记录,-1 打印所有记录。
|
|
-- strResultFilePathBefore - 第一个内存快照文件。
|
|
-- strResultFilePathAfter - 第二个用于比较的内存快照文件。
|
|
-- MemoryReferenceInfo.m_cMethods.DumpMemorySnapshotComparedFile(strSavePath, strExtraFileName, nMaxRescords, strResultFilePathBefore, strResultFilePathAfter)
|
|
mri.m_cMethods.DumpMemorySnapshotComparedFile("./", "Compared", -1, "./LuaMemRefInfo-All-[1-Before].txt", "./LuaMemRefInfo-All-[2-After].txt")
|
|
|
|
-- 按照关键字过滤一个内存快照文件然后输出到另一个文件.
|
|
-- strFilePath - 需要被过滤输出的内存快照文件。
|
|
-- strFilter - 过滤关键字
|
|
-- bIncludeFilter - 包含关键字(true)还是排除关键字(false)来输出内容。
|
|
-- bOutputFile - 输出到文件(true)还是 console 控制台(false)。
|
|
-- MemoryReferenceInfo.m_cBases.OutputFilteredResult(strFilePath, strFilter, bIncludeFilter, bOutputFile)
|
|
-- Filter all result include keywords: "Author".
|
|
mri.m_cBases.OutputFilteredResult("./LuaMemRefInfo-All-[2-After].txt", "Author", true, true)
|
|
|
|
-- Filter all result exclude keywords: "Author".
|
|
mri.m_cBases.OutputFilteredResult("./LuaMemRefInfo-All-[2-After].txt", "Author", false, true)
|
|
|
|
-- All dump finished!
|
|
print("Dump memory snapshot information finished!")
|