How is memory handled in Rocket?

I’m a Rocket noob, so I apologize if this is already answered somewhere else, but I couldn’t find it in the documentation or the forums.

I’m curious about how Rocket handles memory overall – what sort of memory allocator is used under-the-hood, what control we have beyond that, or any list of do’s and don’t’s the dev team may have.

I can see all the stuff on ref-counted pointers and the rest of the smart pointer library, and that’s great, but I’d love to see a 1-page introduction to the overall approach to memory allocation in Rocket.

On the PC for 64 targets we use TBB, which is intel code; part of Thread Building Blocks. On 32 targets we use a custom allocator that we have lots of experience with; we used it on gears, for example. We are going to write a 64 bit version of that, but will probably stick with TBB for editors.

UObjects are garbage collected. You see the reference counted pointers. And some stuff is just managed manually. We are still working on getting a decent memory profiler to rocket users. We have one, but I don’t think we ship the right executables to use it.

Thanks, Gil; that’s very helpful. I’d definitely love to use that memory profiler when it’s available.

Bump. I’m still curious about this. The last time I used Unreal was back in the pre-Gears days when it was still called “Unreal Warfare,” and it relied on a pooling memory allocator based on memory sizes which were powers of 2. Curious if that’s still the general approach to memory.