当我抛出异常时,内存会发生什么?

时间:2010-06-16 17:34:49

标签: php

这是代码(只是对实际问题的简化):

<?php
echo memory_get_usage() . "\n";
function f() {
    throw new Exception();
}
function foo() {
    try {
        f();
    } catch (Exception $e) {
    }
}
foo();
echo memory_get_usage() . "\n";

这是输出(PHP 5.3):

630680
630848

内存发生了什么(丢失了168个字节)?异常对象没有被破坏?请帮忙!感谢

1 个答案:

答案 0 :(得分:0)

异常对象被销毁。更有可能的是,您有输出缓冲,并且添加的168个字节来自存储在缓冲区中的回显this is a test\n。异常将使用超过168字节(因为它存储回溯和其他信息)。