C#. Где код методов структуры сохранен в памяти?

Несколько известно, где.NET сохраняет типы значения в памяти (главным образом в стеке, но мог быть в "куче" при определенных обстоятельствах и т.д.)...

Мой вопрос - где код структуры?

Если я имею, говорят, что 16 байтов полей данных в структуре и крупного метода вычисления в нем - я предполагаю, что 16 байтов будут скопированы в стеке, и код метода хранится где-то в другом месте и совместно используется для всех экземпляров структуры.

Эти предположения корректны?

11
задан 9 March 2010 в 08:10
поделиться

3 ответа

MSIL хранится в разделе кода сборки, который Windows отображает в память при первой загрузке сборки. При первом запуске метода JIT компилирует MSIL в код x86 / x64. Как только метод компилируется в память, он обычно остается там и будет использоваться всеми потоками. Есть некоторые обстоятельства, когда несколько доменов приложений вызывают повторную компиляцию MSIL, но это случается редко.

5
ответ дан 3 December 2019 в 10:44
поделиться

Это отличная статья для выяснения того, что куда идет.

2
ответ дан 3 December 2019 в 10:44
поделиться

Да. В основном методы управляются отдельно в некоторой структуре, которая - в основном - не так хорошо известна и документирована (поскольку никому это никогда не нужно).

он также хранится как байт-код, компилируется, также может быть встроен в другие методы.

Структура известна по типу, поэтому вызовы методов могут быть правильно маршрутизированы.

1
ответ дан 3 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: