Мне нужен метод для профилирования и записи количества памяти, используемой потоком в основном проекте .net.
Я нашел этот интересный метод: GC.GetAllocatedBytesForCurrentThread ();
Как следует из названия метода, я ожидаю получить количество байтов, используемых потоком, но вместо этого я получаю чрезвычайно высокие значения, такие как: 26111439440 байтов, и это невозможно, поскольку не соответствует используемой памяти в диспетчере задач и доступной память на моей машине.
Знаете ли вы другой метод, совместимый с .net core 2.0, который выполняет мою задачу?
UPDATE
GetAllocatedBytesForCurrentThread()
прослушивается, нет никакого значения, которое возвращает значение.
Не знаю, если связано, но уже была ошибка (теперь закрыта), связанная с моей ситуацией: https://github.com/dotnet/coreclr/issues/10207
Я сообщил там.
GetAllocatedBytesForCurrentThread()
Возвращает накопленную память, используемую потоком, а не объем используемого тока, поэтому, если поток продолжает выделять и освобождать память, функция может возвращать очень высокие значения, даже если вы никогда не использовали столько памяти одновременно
* 1027 Временное решение *:
Нет способа получить надежную память, используемую потоком, но вы можете получить память, используемую процессом:
Process currentProcess = Process.GetCurrentProcess();
long memory = currentProcess.WorkingSet64;
Если вы вычисляете объем памяти до начала потока и после того, как сможете оценить объем памяти, используемый этим.