Skip to content

Releases: GoldJohnKing/mimalloc

Arma-3-v2.1.7-20241117

17 Nov 02:08
Compare
Choose a tag to compare

Changelog

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

24 Apr 08:10
Compare
Choose a tag to compare

Changelog

Arma-3-v2.1.2-20230427

27 Apr 08:57
Compare
Choose a tag to compare

Changelog

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

30 Mar 07:21
Compare
Choose a tag to compare
Pre-release

Donation

If you like my work, welcome to donate via Paypal: https://paypal.me/GoldJohnKing

Changelog

Arma-3-v2.0.9-20230103

03 Jan 03:14
Compare
Choose a tag to compare
Pre-release

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

Arma-3-v2.0.7-20221110

10 Nov 02:35
Compare
Choose a tag to compare

Donation

If you like my work, welcome to donate via Paypal: https://paypal.me/GoldJohnKing

Changelog

Arma-3-v2.0.6-20220419

19 Apr 11:53
Compare
Choose a tag to compare

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. Call mi_collect(false) instead.
  • Redesign variants, now we have one for general use, a lock-pages variant and a no-collect variant for users with large memory, and a scheduled-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

07 Mar 10:57
Compare
Choose a tag to compare

Changelog

Arma-3-v2.0.3-20220106

06 Jan 05:43
Compare
Choose a tag to compare

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

25 Dec 09:58
Compare
Choose a tag to compare

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!