I’m running an async method and it apparantly allocates a lot of garbage and creates massive frame time spikes. The spikes show up as Other and EditorLoop and not as GC but still I assume that’s GC.
protected override JobHandle OnUpdate(JobHandle handle)
{
Entities.ForEach((MapMagicReference mmr) => { _mm = mmr.Value; }).WithoutBurst().Run();
if (!_generating)
{
GenerateMap(_mm);
}
return handle;
}
async private Task GenerateMap(MapMagic.MapMagic mm)
{
await Task.Run(() =>
{
_generating = true;
var coordRect = new CoordRect(new Coord(0, 0), new Coord(128, 128));
var results = new Chunk.Results();
var borderSize = 16;
var generateSize = 64;
var size = new Chunk.Size(generateSize, generateSize, generateSize);
var seed = 0;
mm.gens.Calculate(coordRect, results, size, seed);
_generating = false;
});
}
What can I do to avoid the garbage but still run my method Async().