Где хранится статическая переменная VB.NET? - PullRequest
3 голосов
/ 19 сентября 2019

Я хочу знать, где локальная статическая переменная VB.NET хранится в виртуальном адресном пространстве программы и как подпрограмма / метод сохраняет свое значение между вызовами?

Я много раз искал в Интернетедля того, чтобы понять виртуальное адресное пространство VB.NET для процесса.Существует множество диаграмм и объяснений для Java и C, работающих в Linux, которые включают в себя область в виртуальной памяти, известную как «разделяемая» или «данные», но что-то конкретное в VB.NET найти сложнее.Насколько я вижу, .NET не использует область в виртуальном адресном пространстве процесса, называемого «общим».Мой вопрос: где хранятся данные для локальной статической переменной и как подпрограмма / метод получает доступ к ней между каждым вызовом?Интуитивно я предполагаю, что данные общей переменной хранятся в одной из куч (LOH или SOH) в зависимости от размера, а подпрограмма / метод имеет ссылку на это в своем стеке.Но если подпрограмма заканчивается, кадр стека удаляется и ссылка теряется.Как восстановить эту ссылку?

...