Error:Allowed memory size of 134217728 bytes exhausted .PHP報錯

來源:互聯網
上載者:User
關鍵字 php

PHP報這個錯,說記憶體溢出。

我想要的答案不是如何解決這個問題,而是“為什麼”會報這個錯?偽建構函式找不到就會報記憶體溢出呢?
還有一些情況好像也是會出現這種錯誤:圖片上傳過大..無限迴圈.. 這些情況還能理解..

但是為何建構函式這裡也會報?

回複內容:

PHP報這個錯,說記憶體溢出。

我想要的答案不是如何解決這個問題,而是“為什麼”會報這個錯?偽建構函式找不到就會報記憶體溢出呢?
還有一些情況好像也是會出現這種錯誤:圖片上傳過大..無限迴圈.. 這些情況還能理解..

但是為何建構函式這裡也會報?

首先,你這裡寫了個無限遞迴自己看得出把?程式會一直反覆調用_initialize()方法。
至於記憶體溢出,你這裡每次調用都會列印一些東西,這些東西都是需要存放空間的。其次無限進棧也需要消耗記憶體。這裡出現記憶體溢出主要是因為PHP程式還沒爆棧,就先超過記憶體限制了。

ArrayList list = new ArrayList();

    while(true){        list.add(new Object());      }

我猜你是第15行的拼字錯了。你應該是想寫成

if (method_exists($this, '_initialize2')) {    $this -> _initialize2();}

但是你寫成了

if (method_exists($this, '_initialize2')) {    $this -> _initialize();}

很明顯的陷入了無限遞迴死迴圈,最終的結果是程式運行到超出php內容容量限制,就報錯了!~可能正如樓上說的,代碼問題!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.