Limit max cache to 1800MiB for 32bits compiled binaries and to 4GiB for other. Closes #1698.

This commit is contained in:
sledgehammer999 2014-08-07 23:05:47 +03:00
commit 7763a6d2d5
2 changed files with 37 additions and 3 deletions

View file

@ -170,7 +170,15 @@ private slots:
const Preferences* const pref = Preferences::instance();
// Disk write cache
spin_cache.setMinimum(0);
spin_cache.setMaximum(2048);
// When build as 32bit binary, set the maximum at less than 2GB to prevent crashes.
// These macros may not be available on compilers other than MSVC and GCC
#if !defined(_M_X64) || !defined(__amd64__)
//1800MiB to leave 248MiB room to the rest of program data in RAM
spin_cache.setMaximum(1800);
#else
// 4GiB
spin_cache.setMaximum(4*1024);
#endif
spin_cache.setValue(pref->diskCacheSize());
updateCacheSpinSuffix(spin_cache.value());
setRow(DISK_CACHE, tr("Disk write cache size"), &spin_cache);