為什麼使用gd畫圖以後要銷毀資源?

來源:互聯網
上載者:User
關鍵字 php c mysql
MySQL關閉(也算一種銷毀吧)的是串連,
gd銷毀的是畫布。

MySQL的串連算一個進程,gd的畫圖算什麼呢?記憶體嗎?
為什麼畫布特別耗費資源呢?消耗的是那部分資源呢?CPU?記憶體?還是其他?

希望懂的朋友給點指示謝謝

回複內容:

MySQL關閉(也算一種銷毀吧)的是串連,
gd銷毀的是畫布。

MySQL的串連算一個進程,gd的畫圖算什麼呢?記憶體嗎?
為什麼畫布特別耗費資源呢?消耗的是那部分資源呢?CPU?記憶體?還是其他?

希望懂的朋友給點指示謝謝

1.MySQL 串連是線程,不是進程
用戶端發起串連到 mysql server,mysql server 監聽進程,監聽到新的請求,然後 mysql 為其分配一個新的 thread,去處理此請求。從建立串連之開始,CPU 要給它劃分一定的 thread stack,然後進行使用者身份認證,建立上下文資訊,最後請求完成,關閉串連,同時釋放資源,在高並發的情況下,將給系統帶來巨大的壓力,不能保證效能。所以,mysql 通過線程緩衝來是實現線程重用,減小這部分的消耗;一個 connection 斷開,並不銷毀承載其的線程,而是將此線程放入線程緩衝區,並處於掛起狀態,當下一個新的 Connection 到來時,首先去線程緩衝區去尋找是否有閒置線程,如果有,則使用之,如果沒有則建立線程。

2.gd釋放,是釋放記憶體
將映像被輸出以後,畫布中的內容也不再有用。出於節約系統資源的考慮,就需要及時清除畫布佔用的所有記憶體資源。

簡單的來說,gd消耗的資源裡最起碼有記憶體。
你知道,映像相對文字來說,儲存的資訊是海量的,很費記憶體。
在開始使用gd的時候,會給畫布分配大量的記憶體。
當你使用完的時候,這部分記憶體沒有用了,當然要釋放。

至於具體gd會使用到哪些資源,這個和gd的實現相關。

像檔案開啟/關閉,資料庫連接/斷開,記憶體申請/釋放等這種成對的,在用完資源的之後,養成釋放的好習慣。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.