Releases: GoldJohnKing/mimalloc
Arma-3-v2.1.7-20241117
Changelog
- Merge upstream changes v2.1.7, see https://github.com/microsoft/mimalloc#releases for details.
- Update Intel® oneAPI DPC++/C++ Compiler to 2025.0.0.
Description
This is a port of Microsoft's mimalloc memory allocator for Arma 3 and Arma 2: Operation Arrowhead, which utilizes large pages to achieve up to 30% higher FPS than default memory allocator while siginificantly improves the worst case FPS (or the lowest FPS), depending on your PC's specifications and actual scenarios.
Which One Should I Use?
For General Use: mimalloc_<version>.dll
mimalloc_<version>.dll
is for general use, if you do not know which one to choose, this is always the recommendation.
For PC with Large Memory: mimalloc_<version>_lock_pages.dll
This variant locks up to 8 consecutive 1GB large pages in your physical memory and prevents them from being swapped into virtual memory. Personally I won't recommend it, as it consumes huge amount of memory but only provides a little bit more performance gain than mimalloc_<version>.dll
. However, some users say it does do better work than mimalloc_<version>.dll
, so you may give a try.
For PC with Limited Memory: mimalloc_<version>_scheduled_collect.dll
This variant flushes unreferenced memory blocks every 5 minutes to keep memory more compact and less fragmented, leading to more stable performance on memory-limited PC while reducing overall memory consumption. However, if you get "STATUS_ACCESS_VIOLATION" crash frequently, you should fallback to mimalloc_<version>.dll
, or try mimalloc_<version>_no_collect.dll
.
To Avoid Frequently Crash: mimalloc_<version>_no_collect.dll
If you frequently get "STATUS_ACCESS_VIOLATION" crash, you should try mimalloc_<version>_no_collect.dll
. This variant omits all memory flush/free requests from Arma 3, keeping the memory blocks managed by mimalloc internally, which may reduces the probability of "STATUS_ACCESS_VIOLATION" crash. Despite program error (Arma itself or mods' fault), hardware error can also lead to the crash, so I recommend check your PC first, make sure it is neither too overclocked nor too old.
Arma-3-v2.1.4-20240424
Changelog
- Merge upstream changes v2.1.4, see https://github.com/microsoft/mimalloc#releases for details.
- Update compiler to Intel® oneAPI DPC++/C++ Compiler 2024.1.0 Release.
Arma-3-v2.1.2-20230427
Changelog
- Merge upstream updates, see https://github.com/microsoft/mimalloc#releases for details.
- Update Intel® C++ Compiler Classic to 2021.9 (oneAPI 2023.1 Release).
- Optimize compilation options.
Description
This is a port of Microsoft's mimalloc memory allocator for Arma 3 and Arma 2: Operation Arrowhead, which utilizes large pages to give up to 30% higher FPS than default memory allocator, as well as siginificantly improves the worst case FPS (or the lowest FPS), depending on your PC's specifications and actual scenarios.
Which One Should I Use
For General Use: mimalloc_v212.dll
mimalloc_v212.dll
is for general use, if you do not know which one to choose, this is always the recommendation.
For People with Large Memory: mimalloc_v212_lock_pages.dll
mimalloc_v212_lock_pages.dll
is for people who have large memory. It will lock up to 8 consecutive 1GB large pages in your physical memory and prevent it from being swapped into virtual memory. Personally I won't recommend it, as it only provides a little more performance gain than mimalloc_v212.dll
but consumes huge amount of memory. However, some users say it does do better work than mimalloc_v212.dll
, so you may give a try.
For People Who Get Frequently Crash: mimalloc_v212_no_collect.dll
mimalloc_v212_no_collect.dll
is for people with not that large but still large enough memory, or people who frequently crash because of "STATUS_ACCESS_VIOLATION" error. This variant omits all memory flush/free requests from Arma 3, keeping the memory blocks managed by mimalloc internally, which greatly reduces the probability of the well-known "STATUS_ACCESS_VIOLATION" crash. Despite program error (Arma itself or mod's fault), hardware error can also lead to the crash, so I recommend you check your PC first, make sure it is neither too overclocked nor too old.
For People with Limited Memory: mimalloc_v212_scheduled_collect.dll
mimalloc_v212_scheduled_collect.dll
is for people with limited memory. This variant flushes unreferenced memory blocks every 5 minutes to keep memory more compact and less fragmented, which may reduce overall memory consumption. However, this is not without risks. If you get "STATUS_ACCESS_VIOLATION" crash frequently, you should fallback to mimalloc_v212.dll
, or try mimalloc_v212_no_collect.dll
out.
About My Other Ports of Memory Allocators
You may also check out my other ports of memory allocators, but I do not recommend using them anymore.
Arma-3-v2.1.0-20230330
Donation
If you like my work, welcome to donate via Paypal: https://paypal.me/GoldJohnKing
Changelog
- Update follow upstream, see https://github.com/microsoft/mimalloc/releases/tag/v2.1.0 for details.
Arma-3-v2.0.9-20230103
Donation
If you like my work, welcome to donate via Paypal: https://paypal.me/GoldJohnKing
Attention
It is said that v209 may have an instability issue (microsoft#691). If your game crashes, please fallback to v207.
Changelog
- Update follow upstream, see https://github.com/microsoft/mimalloc/releases/tag/v2.0.9 for details.
- Update Intel oneAPI C++ Compiler to 2023.0.0.
Arma-3-v2.0.7-20221110
Donation
If you like my work, welcome to donate via Paypal: https://paypal.me/GoldJohnKing
Changelog
- Update follow upstream, see https://github.com/microsoft/mimalloc/releases/tag/v2.0.6 for details.
- Switch to Intel C++ Compiler for better performance.
Arma-3-v2.0.6-20220419
Changelog
- Update follow upstream, see https://github.com/microsoft/mimalloc/releases/tag/v2.0.6 for details.
- Fix: Do not flush memory on
MemFlushCache
called, which follows official malloc's behavior. See here for details. - Fix: Never call
mi_collect(true)
to force flush memory cache, as it has potential to cause crash. Callmi_collect(false)
instead. - Redesign variants, now we have one for general use, a
lock-pages
variant and ano-collect
variant for users with large memory, and ascheduled-collect
variant for users with small memory.
Description
This is a port of Microsoft's mimalloc memory allocator for Arma 3 and Arma 2: Operation Arrowhead, which utilizes (reserved) huge pages, and may give a performance boost of 5-15% than vanilla BI's TBBv4 memory allocator, depending on your PC's specifications and actual scenarios.
Which version should I use?
mimalloc-v206.dll
is for general use, if you do not know which one to choose, this is always the recommendation.
If you have large memory and always have more than 8 GB consecutive free memory space when you run Arma 3, you may try mimalloc-v206-lock-pages.dll
, as it would lock several consecutive 1 GB large pages in your physical memory and prevent it from being swapped into virtual memory. However, based on various tests and players' feedback, this may only provide minor performance gain, while bring side-effects in some circumstances. I would not recommend to use this variant personally, but it does do better works sometimes.
If you have large memory and do not want to use the "lock-pages" variant, or you frequently encounter the "STATUS_ACCESS_VIOLATION" crash, you may want to try mimalloc-v206-no-collect.dll
. This variant would omit all memory flush/free requests from Arma 3, keeping the memory blocks managed by mimalloc internally, which may greatly reduce the probability of the crash. However, this crash is usually caused by hardware issue, you shall always check if your PC is too overclocked or too old.
If you have small memory, I recommend using mimalloc-v206-scheduled-collect.dll
. This variant would collect and flush unused memory every 5 minutes, which may keep the memory less fragmented and reduce memory use. However, this is not without risks. As I said above, if you frequently encounter the "STATUS_ACCESS_VIOLATION" crash, you should fallback to general one or "no-collect" variant.
About other memory allocator
You may also check out my port of Intel's tbbmalloc memory allocator at GoldJohnKing/oneTBB.
Although mimalloc gives an overall better result on theoretical benchmark, it's been reported that my modified tbbmalloc may gives even better framerate on some machine, especially Intel Core 12th. It's best to try it out on your own!
Arma-3-v2.0.5-20220307
Changelog
- Update follow upstream, see https://github.com/microsoft/mimalloc/releases/tag/v2.0.5 for details.
Arma-3-v2.0.3-20220106
Changelog
- Add a background thread to execute
mi_collect(true)
every 300 seconds to collect unused memory.
Description
This is a port of Microsoft's mimalloc memory allocator for Arma 3 and Arma 2: Operation Arrowhead, which utilizes (reserved) huge pages, and may give a performance boost of 5-15% than vanilla BI's TBBv4 memory allocator, depending on your PC's specifications and actual scenarios.
Which version should I use?
mimalloc_v203.dll
is for general use.
If you have a large memory and always have more than 8GB free memory space before you run Arma 3, you may try mimalloc_v203_LockPages.dll
, as it would lock several continuous 1GB large pages in your physical memory and prevent it from being swapped in to virtual memory, which may bring extra performance improvement.
If you get periodically framerate drop in a regular pattern, you may try my v1.7.3
release, as it may help reduce these issues.
About other memory allocator
You may also check out my port of Intel's tbbmalloc memory allocator at GoldJohnKing/oneTBB.
Although mimalloc gives an overall better result on theoretical benchmark, it's been reported that my modified tbbmalloc may gives even better framerate on some machine. So it's best to try it out on your own!
Arma-3-v2.0.3-20211230
This is a port of Microsoft's mimalloc memory allocator for Arma 3 and Arma 2: Operation Arrowhead, which utilizes (reserved) huge pages, and may give a performance boost of 5-15% than vanilla BI's TBBv4 memory allocator, depending on your PC's specifications and actual scenarios.
mimalloc_v203.dll
is for general use.
If you have a large memory and always have more than 8GB free memory space before you run Arma 3, you may try mimalloc_v203_LockPages.dll
, as it would lock several continuous 1GB large pages in your physical memory and prevent it from being swapped in to virtual memory, which may bring extra performance improvement.
If you get periodically framerate drop in a regular pattern, you may try my v1.7.3
release, as it may help reduce these issues.
You may also check out my port of Intel's tbbmalloc memory allocator at GoldJohnKing/oneTBB.
Although mimalloc gives an overall better result on theoretical benchmark, it's been reported that my modified tbbmalloc may gives even better framerate on some machine. So it's best to try it out on your own!
Merry Xmas and Happy New Year!