php中实例化的对象什么时候会释放
有时候用php在处理比较大的数据的时候,会报内存不够的错误。
想到实例化可能会占据内存,unset掉之后并没有改善多少,那么php中实例化的对象会在什么时候被释放?
回复内容:
有时候用php在处理比较大的数据的时候,会报内存不够的错误。
想到实例化可能会占据内存,unset掉之后并没有改善多少,那么php中实例化的对象会在什么时候被释放?
php是有垃圾回收(Garbage Collection)机制的。具体可以查阅文档:http://php.net/manual/zh/features.gc.php
垃圾回收机制就是最早在Lisp中被提出,关于更多垃圾回收的信息.
参见维基百科:http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
这种时候你就应该考虑你处理数据的算法和机制了, 你说实例化会占用内存, 那你是不是在这个大数据里经常实例化对象呢, 既然是大数据, 你还在里面一直实例化,好像就不太合适了。
另外, unset销毁的只是该对象, 并没有销毁该对象在内存中的占用, 这里引用一句话:
<code>当给一个变量赋值(或者相类似的操作),内存会开辟一个空间存储,这时候会产生两个重要的概念,一个是“内存的地址”,一个是“地址内的内容”。unset打断了变量与地址间的联系。而php会自动检测内存地址里的数据是否完全没有跟其它变量产生联系,在确定没有的情况下会回收内存。所以要回收内存,那就要把所有的联系打断。 </code>
参考文章
unset函数内存分配和销毁问题探秘
php unset对象实例
php原来是通过引用计数器来实现内存回收,也就是是多个php变量可能会引用同一份内存,这种情况unset掉其中一个是不会释放内存的;
例如:$a = 1;
$b = $a;
unset($a);
另外,离开了变量的作用域后变量所占用的内存就会被自动清理(不包含静态变量),如函数或方法内的局部变量,对这些局部变量进行unset在函数外来看内存也是没有减少的。
最后,引用计数有个缺陷,就是当循环引用出现时,计数器没法清0,内存占用会持续到页面访问结束。对于这个问题PHP5.3中增加了垃圾回收机制。嗯,就是1楼提到的

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
