21. Накануне механик, который ставил мне запаску предупредил, что я могу ездить не быстрее пятидесяти миль в час. Включаю аварийки и выезжаю на шоссе. "Ездить быстро легче, чем ездить медленно", - сказала мудрая гусыня Акка Кебнекайсе. Ну или как-то так. Сегодня я прониклась ее мудростью. Аварийки спасли меня от длинного хвоста раздраженных водителей, но не от позора обгоняющих тяжело груженных фур.
22. Медленно качусь в правой крайней линии для тихоходов. Скучно. Вот наконец вывеска уведомляющая о расстоянии до моего выхода, обычно она появляется тогда, когда он уже через один.
23. Концертный зал Сирс-центр. Кто там только не выступал!
24. И наконец мой выход. Он - платный.
25. Плачу такой фиговиной, которая называется IPass. На ee счет я периодически перевожу денежку. Справа проезд для таких как я, а слева - для тех, кто платит монетками. Проезд за монетки стоит почти в два раза дороже.
26. Списываю спеки с колес. Время - 10:35. Ужас-ужас, я снова не попадаю в спортзал. Обычно я хожу туда три раза в неделю в обеденный перерыв, хоть по мне и не особо видно. Фотка времени есть, но по-моему их пока хватит.
27. Сегодня решила зайти через главный вход.
28. Вот на этом мосту я вчера пробила покрышку. За рулем я далеко не новичок, мне просто не повезло.
29. На самом деле вокруг нашего здания очень красиво, кругом прерия, все лето цветут цветы. Около корпусов выкопаны пруды, в которых плавают утки и лебеди. Сейчас зима, поэтому снимать особо нечего.
30. Иду.
31. Наконец на рабочем месте. Мой кубик. Цветы мне подарила подружка около года назад. Я не особо одарена по цветочной части, растениями у нас дома заведует муж, но за этими я ухаживаю с особым старанием.
31. Задача, которой я сейчас занимаюсь, состоит в том, чтобы настроить одну старенькую программку под ожидаемую загрузку (load). Она написана довольно криво, в ней куча проблем начиная с утечки памяти, и до нескольких тысяч ненужных запросов к базе данных. Такие задачи решаются с помошью симуляции нагрузки и профилирования. В качестве симулятора нагрузки выступает написанная мною программка, которая делает вид, что 100 пользователей одновременно кинулись атаковать сервер. Обе программы написаны на JAVA, и поэтому расскажу немного о том, что происходит с памятью. Ребята, я честно пыталась найти соответствующие русские термины, но - увы! Их, похоже, нет. Так что не бейте меня, пожалуйста!
В JAVA управлением памятью занимается виртуальная машина JVM. Она ответственна за выделение, инициализацию, а также освобождение ячеек памяти. Последнее происходит при помощи операции, которая называется "сборка мусора" (garbage collection).
Когда программа стартует в JVM, для нее сразу отводится определенное количество ячеек памяти. Эти ячейки, грубо говоря, делятся на статические регистры (perm space), которые программа читает, но не пишет, и на активную память (heap space).
Heap, в свою очередь делится на три отдела - old, eden1 and eden2. Абсолютное большинство создаваемых объектов - короткоживущие, их программа пишет в один из eden, второй в этот момент не задействован. Eden периодически пересматривается сборщиком мусора (minor garbage collection), и все актуальные объекты переписываются в во второй eden, который по окончании сборки мусора становится актуальным. Представьте, например, переменную внутри функции. Для нее отводится сколько-то ячеек памяти, которые микросекунды спустя уже не нужны, потому что функиция закончила работу. Сборщик мусора их освобождает и возвращает в пользование программы. Если часть невостребованной памяти не возвращается, то minor garbage collections будут происходить все чаще и чаще, освобождая все меньше и меньше памяти, и в конце концов программе станет некуда писать, и она упадет с печальным звоном Out of Memory Error. Графически это будет выглядеть примерно так (это график теста который мы делали в выходные, еще до того, как я починила утечку).