Mar 04, 2016 00:09
А между прочим, в 5-м Android'е, в новом рантайме ART, запилили именно то, о чём я говорил!
А именно - "разделяемые assembly". Т.е. чтобы можно было писать dalvik-библиотеки, которые не нужно, как jar'ники, загружать заново в каждый java-процесс.
Именно это и сделано в ART (ART - прозрачная замена Dalvik): вместо JIT-компиляции они теперь перешли к AOT, dex'ы теперь компилятся в нативный код, складываются в файлик на диске, а потом из него mmap()ятся - и, соответственно, ведут себя приблизительно как обычные .so'шки, не сжирая память отдельно в каждом процессе. Точно так же это сделано и в .NET - чтобы assembly превратить в разделяемый код, нужно её прекомпилировать.
Зиготу (zygote), правда, всё равно оставили, чтобы держать в общей памяти ещё и преинициализированные данные, и таким образом всё-таки экономить ещё чуть-чуть памяти. Но всё равно молодцы. По сути, это теперь получается, что ART чуть ли не круче самой явы :) вот бы его на десктопе попробовать с java кодом... :)