かまてく ブログ

今日の努力は、明日の経験! - Kamakura Shinsho Engineer Blog

PHPでのGC

今回は、GCについて調べてみました。

テストコードはこれ。 test_gc.php

<?php
gc_enable();    // GC 有効
$before_memory = memory_get_usage();
$a = array();
$after_memory = memory_get_usage();
$used_memory = $after_memory-$before_memory;
echo "使用メモリ before[{$before_memory}] after[{$after_memory}]:after - before = {$used_memory}\n";
gc_collect_cycles();
$after_gc_memory = memory_get_usage();
$used_gc_memory = $after_gc_memory-$before_memory;
echo "GC後メモリ before[{$before_memory}] after[{$after_gc_memory}]:after - before = {$used_gc_memory}\n";

$before_memory = memory_get_usage();
for( $i = 0;$i < 100;$i++ ){
    $a[] = "";
}
$after_memory = memory_get_usage();
$used_memory = $after_memory-$before_memory;
echo "使用メモリ before[{$before_memory}] after[{$after_memory}]:after - before = {$used_memory}\n";
gc_collect_cycles();
$after_gc_memory = memory_get_usage();
$used_gc_memory = $after_gc_memory-$before_memory;
echo "GC後メモリ before[{$before_memory}] after[{$after_gc_memory}]:after - before = {$used_gc_memory}\n";

実行結果がこちらです。

$ php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

$ php test_gc.php
使用メモリ before[631008] after[631472]:after - before = 464
GC後メモリ before[631008] after[631808]:after - before = 800
使用メモリ before[632112] after[650024]:after - before = 17912
GC後メモリ before[632112] after[650024]:after - before = 17912
$ php -v
PHP 7.1.23 (cli) (built: Feb 22 2019 22:19:32) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies

$ php test_gc.php vi test_gc.php
使用メモリ before[357616] after[357616]:after - before = 0
GC後メモリ before[357616] after[357648]:after - before = 32
使用メモリ before[357648] after[365896]:after - before = 8248
GC後メモリ before[357648] after[365896]:after - before = 8248

場合によってGCを実行することでメモリ使用が増える場合があるようです。
不思議だ。

鎌倉新書では正社員を積極採用しています!

(WEBデザイナー)デザインからコンセプト設計まで■賞与実績4ヶ月分■

仕事内容 【仕事内容】 ■ポータルサイト(お墓・葬儀・仏壇)のWebサイト構築のためのWebデザインの設計からコーディング業務まで担って頂きます。 特に事業側のコンセプトを理解しながら、LPやサイトのデザイン設計を提案できる方を求めています。 【提供できる価値・経験】 ■細かく数字を見て、サービスをグロースさせていく経験 1週間単位でスプリントを組んで、数多くの機能をリリースさせていく開発プロセスを導入しています。 数多くのトライ&エラーを行い、きっちり効果を分析していくことで、サービスを着実に成長させるプロセスが身につきます。 また、事業側のWebディレクターとも密にコミュニケーションを取りながら、事業会社ならではの一体感を持ったクリエイティブワークを実践しています。 ■今後大きく成長するマーケットにおけるサービス開発に携わることができる経験 世界一の高齢化社会である日本においてライフエンディング業界は大きなポテンシャルを持っています。 その業界に必要なサービスを提供することで、大きなユーザーの需要を満たすサービスを提供するやりがいと経験を得ることができます。 また、今の日本社会で必要とされているサービスを提供しているという社会貢献も大きなやりがいとして持つことができます。 【デザインの特徴】 ■企画構想段階から関わり、ユーザー視点に立ったUIの設計、ビジュアルデザイン ■色彩学、構成学、視覚生理学などの知識を生かしたデザイン ■プロジェクトの成功に貢献するデザイン(目的を本質的に達成するデザイン) ■問題点や課題、目的をしっかり理解し、解決するデザイン 応募資格 【必須(MUST)】 ■Webサービスのデザイン・コーディング経験 ■WebサービスやスマートフォンアプリのUI・情報設計の経験 ■Photoshop、Illustratorなどの画像処理ソフトを使用したビジュアルデザイン業務 【歓迎(WANT)】 ■情報の可視化 ■部分遷移、画面遷移を含むプロトタイプ構築経験 ■デザインコンセプトの言語化 ■ユーザー体験の設計業務 ■デザインのトーン&マナー設計 ■プロダクト改善経験 ▼求める人物像 ・自発的に施策を立案・実行できるマインドを持つ方 ・成長環境の中で自分を試してみたい方 ・数字の分析に強い方 ・コミュニケーション能力 ・課題発見力、解決力 続きを見る