
Denis
11.03.2018
13:43:15
короче, рантайм НЕ знает тип

Evgeny
11.03.2018
13:48:20
может и так, я внутренности рантайма почти не знаю.

Pavel
11.03.2018
14:01:29

Google

Dark
11.03.2018
14:01:29
Интересный вопрос, а деструкторы вызываются при удалении объекта из памяти или нет?

Evgeny
11.03.2018
14:02:50

Dark
11.03.2018
14:04:13
Скорее, вроде работает, но никто не может объянить, за счет чего

Pavel
11.03.2018
14:10:40

Evgeny
11.03.2018
14:11:12

Dark
11.03.2018
14:14:57
Техномагия

Evgeny
11.03.2018
14:15:39

Dark
11.03.2018
14:15:54
Я про твой код

Evgeny
11.03.2018
14:16:02
ты про очистку стека?

Dark
11.03.2018
14:16:11
Ага
Вообще, навеяло эту статью http://lurkmore.to/%D0%A4%D0%B0%D0%B7%D0%B0_%D0%9B%D1%83%D0%BD%D1%8B

Igor
11.03.2018
14:24:47
короче, рантайм НЕ знает тип
не знаю какой рантайм имеется ввиду, но если посмотреть код core/memory.d он содержит куски типа
* ti = TypeInfo to describe the full memory block. The GC might use
* this information to improve scanning for pointers or to
* call finalizers.

Google

Igor
11.03.2018
14:25:20
и ссылки на TypeInfo в https://github.com/dlang/druntime/blob/master/src/gc/impl/conservative/gc.d

Denis
11.03.2018
14:26:36
TypeInfo это точно тип? может там несколько видов смещений для деструкторов лежит и всё?

Evgeny
11.03.2018
14:28:07

Dark
11.03.2018
14:29:09
https://github.com/dlang/druntime/blob/633976f1b2619974e8b3b415e0052b38d1a8e2fb/src/rt/util/typeinfo.d

Evgeny
11.03.2018
14:29:26
а вот в BlkAttr и BlkInfo я не нашел никакой инфы о типах

Dark
11.03.2018
14:29:56
Это где ты увидел?

Evgeny
11.03.2018
14:30:06
копался в исходниках

Denis
11.03.2018
14:31:30
думаю оно там для другого и не вкомпиливается в релизный код если не юзать это в коде своём

Evgeny
11.03.2018
14:32:39

Dark
11.03.2018
14:33:34
https://github.com/dlang/druntime/blob/2f4ed262b2bc28190685f3347cc2e083bf05d4f7/src/core/memory.d#L133
Даже меньше

Evgeny
11.03.2018
14:33:42
https://github.com/dlang/druntime/blob/master/src/core/memory.d#L225

Dark
11.03.2018
14:36:03
NO_MOVE интересный атрибут
Получается, GC действительно двигает блоки, что бы они были теснее?

Denis
11.03.2018
14:39:25
на практике нет, но может в теории
не должна ли функциональность GC быть реализована на уровне ОС?

Dark
11.03.2018
14:40:58
В каком смысле?
В ядре или в стандартных библиотеках?

Denis
11.03.2018
14:41:29
деструктор в конце отмечает блок как свободный - а дальше пусть уже ОС этим занимается

Dark
11.03.2018
14:42:02

Google

Denis
11.03.2018
14:42:26
да это понятно, тут же о другом. GC работает после деструктора

Dark
11.03.2018
14:42:49
А что от ОС требуется тут?

Denis
11.03.2018
14:43:04
побыстрее выдавать новые блоки

Dark
11.03.2018
14:43:27
Ээээ
Я вообще не понимаю, что ты от ОС хочешь

Denis
11.03.2018
14:44:35
зачем нужен GC?

Dark
11.03.2018
14:46:18
По факту, в задаче "убрать память" в GC только два пункта:
1. Вызвать деструктор, если надо
2. Пометить блок как свободный в своих таблицах или вообще убрать его
Что, в данном случае требуется переложить на ОС?

Denis
11.03.2018
14:49:26
> По факту, в задаче "убрать память" в GC только два пункта
Задача так не стоит вообще
задача стоит "управление памятью", чтобы она не фрагментировалась (большие объекты чтоб влазили) и чтобы можно было быстро находить свободные места

Dark
11.03.2018
14:50:30

Pavel
11.03.2018
14:50:32

Denis
11.03.2018
14:50:53
Зато можно было бы от виртуальной памяти избавиться

Dark
11.03.2018
14:51:06

Denis
11.03.2018
14:51:59
ОС могла бы выделять "реальную" память
бОльшими кусками. раз уж она её коллектит

Dark
11.03.2018
14:52:13
Грубо говоря, в ОС есть механизмы управления памятью, которые работаю на манер GC. Но они на уровне процессов

Denis
11.03.2018
14:52:47
> Грубо говоря, в ОС есть механизмы управления памятью
Не в ОС а в процессоре
А в чем плюсы?
минус одна конвертация адресов из виртуальных в реальные
да фигня, конечно. память нужна мелкими кусками а ОС сможет только крупные давать

Google

Dark
11.03.2018
14:54:56

Pavel
11.03.2018
14:56:10

Denis
11.03.2018
14:56:36
Угу. Это специфично для распространённых процессоров, которые внезапно бывают разные.

Pavel
11.03.2018
14:56:56
там никакой мусор не собирался, скрипт отработал, умер - вся память от него почистилась разом.
Так что если хочешь опробовать действительно крутой, гибкий, эффективный, элегантный и популярный язык - добро пожаловать в PHP!
?

Dark
11.03.2018
14:58:04
Решение?

Denis
11.03.2018
14:58:41
страницы ненужны будут
загрузили тебя в адрес х - там и сиди

Admin
ERROR: S client not available

Dark
11.03.2018
14:58:57
А своп?
Даа

Denis
11.03.2018
14:59:14
а что своп?

Dark
11.03.2018
14:59:36
Ну, как ты собираешься в таком раскладе делать выгрузку на диск?

Denis
11.03.2018
14:59:45
а как она сейчас делается? ровно так же

Dark
11.03.2018
15:00:13
А она сейчас работает за счет того, что страницы выгружаются-загружаются

Denis
11.03.2018
15:00:37
а будет работать за счёт того что загружаются-выгружаются другие блобы

Dark
11.03.2018
15:00:59
Процессы целиком, что ли?

Denis
11.03.2018
15:01:27
любую систкему деления на куски можно использовать же

Google

Dark
11.03.2018
15:01:36
Можно
Но
Как бы сказать
Мы не можем двигать процессы с реального адреса
Не, не так

Denis
11.03.2018
15:04:05

Dark
11.03.2018
15:04:09
Допустим, у нас есть частоиспользуемый блоб А и нечастоиспользуемый блоб Б

Denis
11.03.2018
15:04:16
а, понял - маппинг так и так остаётся
ну да, верно
так что тут два в одном

Dark
11.03.2018
15:05:18
Что два в одном?

Denis
11.03.2018
15:06:02
ну маппинг всё равно ведь не девается никуда - памяти реальной меньше чем потребляют все загруженные софтины
так что да
https://stackoverflow.com/questions/26325759/why-doesnt-the-os-have-a-garbage-collector
Microsoft Windows DCOM is OS provided distributed reference counting garbage collector.

Dark
11.03.2018
15:07:50
Интересно, как он считает ссылки?
Или это требуется от ЯПа?

Denis
11.03.2018
15:09:27
в явовский ассемблер недавно глядел - там есть прямо вызовы типа "создать класс"
и всё, машина их создаёт и ессно считает ссылки

Dark
11.03.2018
15:10:18
Дык там байткод

Denis
11.03.2018
15:10:33
а в шарпе не?

Dark
11.03.2018
15:10:43
В шарпе IL
А что делать тем, кто не на нем?