摘要
简短的推荐(来自更多数据信息,请参阅答案)
为避免内存泄漏,您可以:
题
什么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) 我正在运行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程序.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)