Skip to content

Commit

Permalink
Merge pull request reeze#6 from reeze/master
Browse files Browse the repository at this point in the history
merge update
  • Loading branch information
zither committed Jan 19, 2015
2 parents fc90b72 + fd29e3e commit f3abf8f
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
4 changes: 2 additions & 2 deletions book/chapt06/06-00-memory-management.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
内存的使用操作包括申请内存,销毁内存,修改内存的大小等。
如果申请了内存在使用完后没有及时释放则可能会造成内存泄露,如果这种情况出现在常驻程序中,
久而久之,程序会把机器的内存耗光。所以对于类似于PHP这样没有低层内存管理的语言来说,
内存管理是其至关重要的一个模块,它在很大程序上决定了程序的执行效率,
内存管理是其至关重要的一个模块,它在很大程度上决定了程序的执行效率。

在PHP层面来看,定义的变量、类、函数等等实体在运行过程中都会涉及到内存的申请和释放
在PHP层面来看,定义的变量、类、函数等实体在运行过程中都会涉及到内存的申请和释放
例如变量可能会在超出作用域后会进行销毁,在计算过程中会产生的临时数据等都会有内存操作,
像类对象,函数定义等数据则会在请求结束之后才会被释放。在这过程中合适申请内存合适释放内存就比较关键了。
PHP从开始就有一套属于自己的内存管理机制,在5.3之前使用的是经典的引用计数技术,
Expand Down
4 changes: 2 additions & 2 deletions book/chapt06/06-01-memory-management-overview.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ PHP不需要显式的对内存进行管理,这些工作都由Zend引擎进行
Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)

这个错误的信息很明确,PHP已经达到了允许使用的最大内存了,通常上来说这很有可能是我们的程序编写的有些问题。
比如:一次性读取超大的文件到内存中,或者出现超大的数组,或者在大循环中的没有及时是放掉不再使用的变量
比如:一次性读取超大的文件到内存中,或者出现超大的数组,或者在大循环中的没有及时释放掉不再使用的变量
这些都有可能会造成内存占用过大而被终止。

PHP默认的最大内存使用大小是32M, 如果你真的需要使用超过32M的内存可以修改php.ini配置文件的如下配置:
Expand Down Expand Up @@ -76,6 +76,6 @@ PHP默认的最大内存使用大小是32M, 如果你真的需要使用超过32M
>它所占用的内存还是不会被释放的。
>
>当然这还有一种情况:出现循环引用,这个就得靠gc来处理了,
>内存不会当时就是放,只有在gc环节才会被释放。
>内存不会当时就释放,只有在gc环节才会被释放。
后面的章节主要介绍PHP在运行时的内存使用和管理细节。这也能帮助我们写出更为内存友好的PHP代码。

0 comments on commit f3abf8f

Please sign in to comment.