【问题标题】:memory of a process in LuaLua中进程的记忆
【发布时间】:2011-11-22 08:24:36
【问题描述】:

如何获取 Lua 中任何进程的内存?

在 Lua 中可以吗? C# 是否有可能,但我不确定。

在 C# 中我们可以使用 PerformanceCounter 类来获取

PerformanceCounter WorkingSetMemoryCounter = new PerformanceCounter("Process",
    "Working Set", ReqProcess.ProcessName);

在 Lua 中有什么等价的?

假设有 5 个 IE (Internet Explorer) 进程正在运行。如何获取这些进程的列表?

【问题讨论】:

  • 这是 Lua。 Lua 不是首字母缩写词。

标签: lua


【解决方案1】:

Lua 没有这个内置功能。您可以编写一个绑定到为您提供该功能的库,或者您可以与一个程序交互来执行此操作(例如读取“ps -aux | grep firefox”的输出)。

【讨论】:

    【解决方案2】:

    要获取 Lua 分配的内存(以千字节为单位),请使用 collectgarbage"count"

    【讨论】:

      【解决方案3】:

      为了详细说明其他人所说的,Lua 是一种为嵌入而设计的脚本语言。这意味着它在内部另一个应用程序中运行。

      Lua.exe 就是这样一种应用程序。但它并不是唯一可以编写 Lua 脚本并在其上执行的应用程序。

      在 Lua 脚本中,您可以完全访问周围应用程序环境允许的内容。如果应用程序没有明确允许您访问“文件”或“操作系统”等内容,那么您将无法访问它们。期间。

      Lua 的标准库(应用程序可以禁止脚本使用。Lua.exe 允许,但有些嵌入式环境不允许)非常小。它没有提供很多便利,这使得 Lua 成为嵌入式环境的理想选择:小型标准库意味着更小的可执行文件。这就是为什么你在移动应用程序中看到的 Lua 比 Python 多的原因。此外,标准库是跨平台的,因此它不会访问特定于平台的库。

      模块,用户编写的程序(无论是 Lua 还是 C/C++)都可以加载到 Lua.exe 的环境中。这样的模块可以让你的 Lua 脚本访问诸如“进程”、进程占用多少内存等等之类的东西。但是,如果您无权访问此类模块,则您无法从 Lua 脚本中获取该信息。

      你能做的最多就是获取这个特定 Lua 环境直接分配和使用的内存大小,正如@lhf 所说:collectgarbage "count"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-18
        • 2013-05-11
        • 2011-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多