Arma-3-v2.1.2-20230427
Pre-releaseNote
This release is deprecated, as it has performance drawbacks than v210
, and does no performance gain than default TBB memory allocator.
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.