On 1/31/20 2:14 AM, cc wrote:
On Wednesday, 29 January 2020 at 21:10:53 UTC, Steven Schveighoffer wrote:
I'm pretty sure std.concurrency uses Variant to pass message data, which boxes when it gets over a certain size. You are probably crossing that threshold.

The allocations should level out eventually when the GC starts collecting them.


Is there a way to pre-allocate a buffer or something to be used? Ideally I'd like to avoid too many garbage collections happening, in my application these thread messages happen almost every frame and are quickly adding up to 100s of kilobytes in allocations every few seconds.

You could use RefCounted to build a struct that then is sendable with the data you need. RefCounted allocates using C malloc, not the GC.

It might actually be reasonable to modify std.concurrency to use RefCounted instead of GC memory (i.e. it needs to be a specialized Variant).

-Steve

Reply via email to