From fcb122124b042d343f38abe547e83f78ef848359 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 6 Feb 2014 20:55:49 +0000 Subject: (svn r26310) -Codechange: clean up some caches during town generation to keep memory usage significantly lower (MJP) --- src/town_cmd.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/town_cmd.cpp') diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index d9843866c..13616a2cc 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -46,6 +46,7 @@ #include "object_base.h" #include "ai/ai.hpp" #include "game/game.hpp" +#include "gfx_layout.h" #include "table/strings.h" #include "table/town_land.h" @@ -1889,6 +1890,14 @@ bool GenerateTowns(TownLayout layout) * Note that this is really a suggested value, not a required one. * We would not like the system to lock up just because the user wanted 100 cities on a 64*64 map, would we? */ do { + if (total % 512 == 0) { + /* Clear the caches regularly, otherwise it will only be done + * at the end of the whole cycle when OpenTTD has allocated + * lots and lots of memory for these essentially caches. */ + ClearPersistentStorageChanges(true); + Layouter::ReduceLineCache(); + } + bool city = (_settings_game.economy.larger_towns != 0 && Chance16(1, _settings_game.economy.larger_towns)); IncreaseGeneratingWorldProgress(GWP_TOWN); /* Get a unique name for the town. */ -- cgit v1.2.3-54-g00ecf