小编jan*_*nih的帖子

Linux操作系统:/ proc/[pid]/smaps vs/proc/[pid]/statm

我想计算单个进程的内存使用情况.经过一些研究后,我遇到了smaps和statm.

首先是什么是smaps和statm?有什么不同?

statm有一个字段RSS和smaps我总结了所有的RSS值.但是这些值对于同一过程是不同的.我知道statm措施在页面中.为了进行比较,我将该值转换为kb,如在smaps中.但这些价值观并不平等.为什么这两个值不同,即使它们代表同一过程的rss值?

statm
232214 80703 7168 27 0 161967 0 (measured in pages, pages size is 4096)

smaps
Rss 1956
Run Code Online (Sandbox Code Playgroud)

我的目标是计算单个进程的内存使用情况.我对两个价值观感兴趣.USS和PSS.我可以通过使用smaps来获得这两个值吗?这个价值是否正确?另外,我想以百分比形式返回该值.

linux memory-management

6
推荐指数
1
解决办法
6068
查看次数

如何限制nodejs中最大rss内存大小?

我们在云服务器上运行了一个 Nodejs 服务,只给它 512MB RAM(对于应用程序来说绰绰有余)。

服务器的内存使用量缓慢增长。当读取到512MB内存限制时,服务器会自动重新启动。

我尝试通过大量负载测试来读取内存使用统计信息,该数字显示缓慢增长rss memory usage,但非常稳定低heap memory usage

我尝试过--max_old_space_size,但这只会限制堆大小,这对我来说从来都不是问题。堆大小读取始终低于 50MB。

有办法限制rss memory size吗?


  1. rss一些快速研究表明和之间的区别heap是 C++ 代码的缓冲区大小。不确定是否可以调试它们(gdb?)。

  2. 有人说 v8 有 1.4GB 的限制,这也是堆大小限制吗?如果是rss限制,也许我可以修改nodejs源代码,构建一个限制更小的特殊版本?

  3. --expose-gc经常尝试清理GC,但同样,这只有助于堆使用(并减慢它的速度)。


更新:找到了原因,RSS 使用量不断增长是由于我们使用的库之一的 C++ 内存泄漏(谢谢bignum)。避免使用它可以保持 rss 内存稳定。

memory limit node.js

6
推荐指数
0
解决办法
1900
查看次数

RSS 是否跟踪保留或提交的内存?

我正在 java 8 上运行不同 jvm 选项的实验,以降低 RSS:

输出(部分线程区域):

-                    Thread (reserved=130696KB -21564KB, committed=130696KB -21564KB)
                            (thread #121 -21)
                            (stack: reserved=130048KB -21504KB, committed=130048KB -21504KB)
                            (malloc=379KB -67KB #610 -105)
                            (arena=268KB +7 #240 -42)
Run Code Online (Sandbox Code Playgroud)

问题:上面输出的 RSS 将考虑什么内存,是committed还是reserved

jvm jvm-arguments

5
推荐指数
1
解决办法
1523
查看次数

使用罗马图书馆获取所有 RSS 提要条目

我正在使用 Java 的罗马库来解析一些 RSS。默认情况下,它需要 25 个条目。

请告诉我,如何获得接下来的 25 个条目?

我的测试代码是:

public static SyndFeed getSyndFeedForUrl(String url) throws Exception {

    SyndFeed feed = null;
    InputStream is = null;

    try {

        URLConnection openConnection = new URL(url).openConnection();
        is = new URL(url).openConnection().getInputStream();
        if("gzip".equals(openConnection.getContentEncoding())){
            is = new GZIPInputStream(is);
        }
        InputSource source = new InputSource(is);
        SyndFeedInput input = new SyndFeedInput();
        feed = input.build(source);

    } catch (Exception e){
        e.printStackTrace();
    } finally {
        if( is != null) is.close();
    }

    return feed;
}

public static void main(String[] args) {
        SyndFeed …
Run Code Online (Sandbox Code Playgroud)

java rss rome

2
推荐指数
1
解决办法
3034
查看次数

标签 统计

java ×1

jvm ×1

jvm-arguments ×1

limit ×1

linux ×1

memory ×1

memory-management ×1

node.js ×1

rome ×1

rss ×1