当前位置: 首页 > 面试题库 >

在Linux中,如何判断正在使用多少内存进程?

江坚成
2023-03-14
问题内容

我认为我的LAMP应用程序中可能发生内存泄漏(内存用完,交换开始使用,等等)。如果我可以看到各个进程使用了​​多少内存,则可以帮助我解决问题。有没有办法让我在*
nix中查看此信息?


问题答案:

获得正确的内存使用情况比人们想象的要棘手。我能找到的最好方法是:

echo 0 $(awk '/TYPE/ {print "+", $2}' /proc/`pidof PROCESS`/smaps) | bc

其中“ PROCESS”是要检查的过程的名称,而“ TYPE”是以下之一:

  • Rss :常驻内存使用情况,该进程使用的所有内存,包括该进程与其他进程共享的所有内存。它不包括掉期;
  • Shared :该进程与其他进程共享的内存;
  • Private :此过程使用的私有内存,您可以在此处查找内存泄漏;
  • Swap :交换进程使用的内存;
  • Pss :比例设置大小,良好的整体内存指示器。它是为共享而调整的Rss:如果某个进程在1个私有进程中具有1MiB,在其他10个进程之间共享了20MiB,则Pss为1 + 20/10 = 3MiB

其他有效值是 Size (即虚拟大小,几乎没有意义)和 Referenced (当前标记为引用或访问的内存量)。

您可以使用watch或其他bash-script-fu来监视要监视的进程的那些值。

有关更多信息smapshttp
:
//www.kernel.org/doc/Documentation/filesystems/proc.txt。



 类似资料:
  • 问题内容: 在执行过程中,一个Java程序如何知道它正在使用多少内存? 我不在乎它有多有效! 问题答案: VonC的答案是一个交互式解决方案- 如果您希望以编程的方式了解,则可以使用Runtime.totalMemory()来查找JVM使用的总量,然后使用Runtime.freeMemory()来查找仍有多少可用量(即它分配 到 的JVM,但不分配 中 的JVM -新对象可以使用这块内存)。 这些

  • 问题内容: 您将如何查找对象正在使用多少内存?我知道有可能找出一个代码块,而不是实例化对象(在其生命中的任何时候)要使用多少,这就是我想要的。 问题答案: 尝试这个: 如果对象是由垃圾收集器管理的,则getsizeof()调用该对象的__sizeof__方法并增加额外的垃圾收集器开销。

  • 我的使用场景: 需要判断富文本编辑器内是否只输入了空格or回车(这种情况我会判定为空) 比如上面这串就是只输入了空格和回车后,富本文返回的内容,用正则要如何判断呢? 以及还有一个拓展需求,就是我想要去除富文本编辑器内,内容首尾的空格和回车要如何匹配呢? 感觉这个应该和上面思路有共同的地方

  • 问题内容: 我有一个Java应用程序。我想知道发送此信号的进程的pid。 那可能吗? 问题答案: 两种Linux专用方法是和,它们允许程序接收有关已发送信号的 非常 详细的信息,包括发送方的PID。 调用并传递给它,其中包含所需的信号处理程序,并且设置了标志。使用此标志,您的信号处理程序将接收 三个 参数,其中一个是包含发送者的PID和UID的结构。 从中调用和读取结构(通常以某种选择/轮询循环的

  • 问题内容: 我在具有16GB Ram和64位OS的Linux机器上运行Python 2.7。我编写的python脚本可能会将过多的数据加载到内存中,这使计算机的运行速度降低到我什至无法杀死进程的地步。 虽然可以通过以下方式限制内存: 在运行脚本之前,请在外壳程序中添加一个限制选项。在我到处看的地方,该模块具有与相同的功能。但是调用: 在我的脚本开始时,绝对没有任何作用。即使将值设置为12000,也

  • 我最近读了很多关于字符串内存分配的文章,但找不到任何细节,如果在Java8中情况相同的话。 在Java8中,像这样的字符串会使用多少内存空间?我使用64位版本。