相关疑难解决方法(0)

php进程的内存使用情况

摘要


简短的推荐(来自更多数据信息,请参阅答案)

为避免内存泄漏,您可以:

  1. 当它们变得无用时立即取消变量
  2. 您可以使用xdebug通过函数详细报告内存消耗并查找内存泄漏
  3. 你可以设置memory_limit(例如5Mb)以避免虚拟内存分配

什么php可以使用内存,除了库和变量?我使用以下代码监视变量及其~3Mb使用的内存:

$vars = array_keys(get_defined_vars());
        $cnt_vars = count($vars);
        $allsize = 0;
        for ($j = 0; $j < $cnt_vars; $j++) {

            try
            {
                $size = @serialize($$vars[$j]);
                $size = strlen($size);
            }
            catch(Exception $e){
                $str = json_encode($$vars[$j]);
                $str = str_replace(array('{"','"}','":"','":'), '', $str);
                $size = strlen($str);
            }
            $vars[$j] = array(
                'size' => $size,
                'name' => $vars[$j]
            );
            $allsize += $size;
        }
Run Code Online (Sandbox Code Playgroud)

和库需要大约18Mb(libcurl等)所以总共21Mb,但是

pmap -x(进程)显示,总内存消耗为kB:314028 RSS:74704 Dirty:59672

所以,实际消费总量约为74Mb.另外我在我的pmap中看到一些带有[anon]映射的大块用于PHP使用这个块的什么?

php版本:5.5.9-1ubuntu4.14 php扩展:

root@webdep:~# php -m
[PHP …
Run Code Online (Sandbox Code Playgroud)

php linux memory

12
推荐指数
2
解决办法
2311
查看次数

在释放对象和垃圾回收后,Java仍然使用系统内存

我正在运行JVM 1.5.0(Mac OS X Default),我在Activity Monitor中监视我的Java程序.我有以下内容:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;

public class MemoryTest {

public static void memoryUsage() {
 System.out.println(
     Runtime.getRuntime().totalMemory() - 
     Runtime.getRuntime().freeMemory()
 );
}

public static void main( String[] args ) throws IOException {

    /* create a list */
    ArrayList<Date> list = new ArrayList<Date>();

    /* fill it with lots of data */
    for ( int i = 0; i < 5000000; i++ ) {
        list.add( new Date() );
    } // systems shows ~164 …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection memory-leaks memory-management

9
推荐指数
2
解决办法
9787
查看次数

在Java Heap之外分配的巨大内存

我有一个作为服务器运行的java程序.Java版本是Java6u35.操作系统是CentOS 6.

堆配置是-Xmx3g -Xms3g.经过几天的运行,它分配了超过8G的内存并实际使用了超过6G的内存.

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                        
26955 deploy    15   0 8347m 6.0g  10m S 30.9 25.5   3730:12 java 
Run Code Online (Sandbox Code Playgroud)

额外的内存肯定是堆内存.使用pmap,我得到了以下内容.单位是k.整个输出超出了stackoverflow问题体限制的限制,所以我删除了一些小的.从大小1016k开始.(有超过300行有类似的内容address 1,016 rwx-- [anon]):

addres             size(kB) 
0000000063ba3000    1,016   rwx--   [anon]   (over 300 similar lines omitted)
00002aaaaaac3000    1,020   -----   /usr/java/jdk1.6.0_35/jre/lib/amd64/libverify.so
00002aaaaabee000    1,020   -----   /usr/java/jdk1.6.0_35/jre/lib/amd64/libjava.so
00002aaaaad2c000    1,020   -----   /usr/java/jdk1.6.0_35/jre/lib/amd64/libjdwp.so
00002aaaaae38000    1,020   -----   /usr/java/jdk1.6.0_35/jre/lib/amd64/libnpt.so
00002aaab76b1000    1,020   -----   /usr/java/jdk1.6.0_35/jre/lib/amd64/libdt_socket.so
00002aaab77b8000    1,020   -----   /usr/java/jdk1.6.0_35/jre/lib/amd64/libmanagement.so
00002aaab842b000    1,020   -----   /usr/java/jdk1.6.0_35/jre/lib/amd64/libnio.so
00002aaab8748000    1,020   ----- …
Run Code Online (Sandbox Code Playgroud)

java heap memory-leaks memory-management heap-memory

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