Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
ob:o7:memory [2016/08/24 19:14] иван_денисов |
ob:o7:memory [2017/04/06 23:34] иван_денисов |
||
---|---|---|---|
Строка 4: | Строка 4: | ||
Доступная память RAM используется под следующие ресурсы: | Доступная память RAM используется под следующие ресурсы: | ||
- | * heap (heapLim - heapOrg) | + | * куча; |
- | * stack | + | * стек; |
- | * global variables | + | * глобальные переменные; |
- | * pointers table, strings, modules table | + | * таблица указателей, строки, таблица модулей. |
- | Heap (куча) используется только при динамическом выделении памяти через команду NEW, и она заполняется снизу вверх. Для сборки мусора в куче надо вызывать команду **MicroGC0.Collect**. Количество выделенной динамической памяти доступно в переменной **MicroKernel0.allocated**, | + | Куча используется только при динамическом выделении памяти через команду NEW, и она заполняется снизу вверх. Для сборки мусора в куче надо вызывать команду **MicroGC0.Collect**. Количество выделенной динамической памяти доступно в переменной **MicroKernel0.allocated**, |
- | Стек заполняет выделенную под него память сверху вниз. И когда этот объем полностью заполняется, | + | Стек заполняет выделенную под него память сверху вниз. И когда этот объем полностью заполняется, |
- | Размер памяти, | + | Размер памяти, |
Степень заполнение стека возможно вычислить, | Степень заполнение стека возможно вычислить, | ||
- | SYSTEM.GET(SYSTEM.REG(6), stkOrg); | + | SYSTEM.GET(SYSTEM.REG(MT), stkOrg); |
- | SYSTEM.GET(SYSTEM.REG(13), stkPos); | + | SYSTEM.GET(SYSTEM.REG(SP), stkPos); |
stkLen := stkOrg - stkPos; | stkLen := stkOrg - stkPos; | ||
Так возможно контролировать при отладке, | Так возможно контролировать при отладке, | ||
- | Переполнение стека возможно обнаружить и более простым путем, сравнив **stkPos** с **MicroKernel0.heapLim**. Если он меньше, | + | Переполнение стека возможно обнаружить и более простым путем, сравнив **stkPos** с **MicroKernel0.heapLim**. Если он меньше, |
+ | |||
+ | ---- | ||
+ | |||
+ | Автор заметки: |