Простой ответ (меньше я ошибаюсь), нет. Как правило, это не очень хорошая идея по двум причинам. Во-первых, потому что это вызывает проблему доверия между вашей программой и другими программами (не говоря уже о том, что мы, люди, тоже не будем доверять вашему приложению). во-вторых, если вы смогли получить доступ к памяти другого приложения и внести изменения без ведома приложения, вы вызовете сбой приложения (это также делают вирусы).
Сборщик мусора вызывается из среды выполнения. Среда выполнения «владеет» пространством памяти и позволяет другим приложениям «жить» в этом пространстве памяти. Вот почему может существовать сборщик мусора. Вам нужно будет создать среду выполнения, которой ОС выделяет память, чтобы среда выполнения выполняла приложение под своими полномочиями и также использовала GC под своими полномочиями. Вам нужно будет разрешить некоторые инструменты или API, которые позволяют разработчику приложения «запрашивать» память у вашей среды выполнения (а не у ОС), и у вашей среды выполнения есть способ не только ответить на такой запрос, но и отслеживать пространство памяти, которое оно выделение этому приложению. Вам, вероятно, понадобится фреймворк (набор DLL), который сделает эти вызовы доступными для приложения (разработчик будет использовать их для формирования запроса внутри своего приложения).
Вы должны быть уверены, что ваш сборщик мусора не удалит память, отличную от памяти, которая используется исполняемым приложением, поскольку у вас может быть более 1 приложения, работающего в вашей среде выполнения одновременно.
Надеюсь это поможет.
person
Phillip
schedule
11.04.2010