Как стать автором
Обновить

Комментарии 12

Спасибо, автор, за статью. Но в первом абзаце Вы обещали
передать некоторые основные мысли/идеи
, а кроме HB ничего не передали. Еще не плохо бы пару слов написать про кто «мы» такие, раз уж пишете:
Все эти доклады мы аккуратно собрали для Вас в плей-лист, чтобы Вы могли просто весь его просмотреть. Мы для Вас даже отсортировали доклады.

Ссылка на плей-лист и, далее, на сайт и группу ВК больше похожа на рекламу курсов, где вы менеджером числитесь)) Это лично мое субъективное мнение, извините, если что.
HB тоже не передали в общем то…
Ну хоть упомянули) И на том спасибо) А то был бы вообще оффтопик)
Абстрактная статья об абстрактных машинах, о сабже практически ни слова. Ну нельзя же так разочаровывать, скажите, что продолжение — более подробное — все же следует! Об организации памяти, об областях памяти, о сборщике мусора и какими алгоритмами он выполняет свою работу, как представлены в памяти классы и объекты и сколько они живут, о синхронизации и совместном использовании ресурсов, о хитростях компилятора и JIT, какие грабли ждут разработчиков и как поменьше по ним гулять…

К примеру, сегодня мы с коллегами обсуждали (на правах светского трепа) такие не шибко заковыристые вопросы:
— как представлены в Java ссылки на объекты
— сколько памяти занимает ссылка?
— каков максимальный размер массива? списка?
— сколько памяти занимает байтовая переменная? булева переменная? а байтовый массив?
— почему программа при запуске сразу отжирает приличный кусок (1-16Г) памяти?
— где хранится стек вызовов
— переполнение памяти и переполнение стека вызовов (StackOverflowException и OutOfMemoryException)

было бы интересно почитать об этом, не сказочку на ночь для самых маленьких программистов.

И
Прошу прощения, если кого-то задел
Посмотрите доклады означенных в статье уважаемых, не побоюсь этого слова, «мега-мозгов» Java-мира. Кстати, это и есть то ценное по теме (список авторов и ссылки на их доклады), что присутствует в статье.
Подавляющее большинство ваших вопросов не имеют точного ответа, т.к. целиком зависят от реализации. Я вот, например, раньше думал, что ссылки — это аналоги C++-ных указателей, и объекты представлены так же, с кучей указателей на VMT. А оказалось, что в по крайней мере в одной реализации JVM ссылка — это пара указателей: на объект и на VMT. А в самом объекте указателей на VMT нет. Но это так только в одной JVM, в других может быть иначе.
Практически ничего из того, что вы упомянули, не относится к Java Memory Model. JMM — это про организацию взаимодействия потоков через общую память, про допустимые в языке пути исполнения инструкций. Расположение объектов в памяти, куча, стеки и сборщики мусора и OutOfMemory, это не JMM.

То, что вы написали — хорошо, но только если будет иметь продолжение. Сама идея о том, что можно записать значение в переменную, а потом оно где-то может не прочитаться кажется начинающему разработчику контринтуитивной. Этой идее стоит посвятить статью. Но если не будет продолжения, то единственное чем она поможет тем, у кого нет времени — это задуматься о том, что конкарренси надо таки изучать.

В кратком введении в Java Memory Model, возможно, стоило бы упомянуть о том, какие темы она покрывает, а к каким совсем никак не относится. Очень часто приходится видеть, что люди под видом JMM ожидают (как в комментариях выше) или даже преподносят что-то, что не имеет к ней никакого отношения: как устроены объекты в памяти, как они размещаются в куче, как работают сборщики мусора и прочее, что относится к управлению памяти, но не к модели. В результате возникает либо разочарование от того, что рассказали не то (если читатель ее неправильно понимает), либо некорректное представление о сути JMM начинает распространяться сильнее (если сам автор неправильно ее понимает и преподносит).
Перевод стьих херба саттера про бесплатный обед есть на этом сайте. И картинка там есть та же. Слинкуйте плиз. Пусть народ почитает что мир изменился
Как то очень жиденько. Наивные попытки пересказать JMM на пальцах только запутывают людей.
Если уж на то пошло, то лучше читать какие то более целостные источники. Например Шипилёв грамотно фиксирует и переносит свои знания в «матрицу» — JMM pragmatics by @shipilev
А за живым общением всегда можно приехать на Joker или JPoint. Тем более, что все это на просторах родной страны :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации