----------------------------------------------------------------------------------------------------------
-- 
-- システム関連操作スレッド
--
----------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------
-- システム関連操作スレッド
----------------------------------------------------------------------------------------------------------
function systemThread()


	-- 少しでもパフォーマンス稼ぐためにガベージコレクタオフ 
	-- 実際のところ効果あるかどうかは不明。
	-- OFFにしたら大変なことになるｗｗｗｗｗ あたりまえっちゃあたりまえか。

	-- 以下は危険なのでコメントはずさないように。
	-- collectgarbage("stop");

	-- こちらを参考にGCチューニング。こまめにやったほうが良いみたい。
	-- サボって後でまとめて部屋掃除するのと、毎日こまめに部屋掃除するの
	-- 1回当たりの掃除時間はどっち短いかって話。
	--
	-- ところかまわずオブジェクトｂｋｂｋ作ってるソースなので余計に気を使っちゃう。
	-- 参考: http://hammm.blog21.fc2.com/blog-entry-49.html 
	-- ここの記述によると、これぐらいのパラメータが良いようだ。
	-- でも本当のところどうなのかよくわからん。
	collectgarbage("setpause", 80);
	collectgarbage("setstepmul", 120);

	local collected = false;
	while (true)
	do

		-- 以下は危険なのでコメントはずさないように。
		--[[ 
		if (roundStarted())
		then
			collected = false;
		end
		-- ラウンド終了時に無理やりGC
		if ((roundFinished()) and (not collected))
		then
			logger:info("◆System Thread◆", "フルGC前 メモリ使用量 :" .. formatFloatNumber(collectgarbage("count")/1024) .. " MByte");
			collectgarbage("collect");
			collectgarbage("stop");
			collected = true;
			logger:info("◆System Thread◆", "フルGC後 メモリ使用量 :" .. formatFloatNumber(collectgarbage("count")/1024) .. " MByte");
		end
		]]--

		if (battle_time % 300 == 0)
		then
			logger:warn("◆System Thread◆", "現在のメモリ使用量 :" .. formatFloatNumber(collectgarbage("count")/1024) .. " MByte");
		end

		yield();
	end
end

function formatFloatNumber(target)
	return string.format("%4.3f", target);
end
