Существенно - нет. Это почти так легко, как это добирается. Вы могли бы переписать его немного более короткий/более чистый, но идея будет тем же. Это - то, как я записал бы его:
$c = true; // Let's not forget to initialize our variables, shall we?
foreach($posts as $post)
echo '<div'.(($c = !$c)?' class="odd"':'').">$post</div>";
Java использует управляемую память, поэтому единственный способ выделить память - использовать оператор new
, и единственный способ освободить память - это использовать сборщик мусора.
Этот технический документ по управлению памятью (PDF) может помочь объяснить, что происходит.
Вы также можете позвонить по телефону System.gc ()
, чтобы предложить немедленно запустить сборщик мусора. Однако окончательное решение принимает среда выполнения Java, а не ваш код.
Согласно документации Java ,
Вызов метода gc предполагает, что Виртуальная машина Java затрачивает усилия на переработку неиспользованных предметов в чтобы сделать память они в настоящее время занимаю доступный для быстрого повторное использование. Когда управление возвращается из вызов метода, виртуальная машина Java приложил все усилия, чтобы вернуть пространство от всех выброшенных предметов.
Кажется, никто не упомянул явную установку ссылок на объекты на null
, что является допустимым методом «освобождения» памяти, который вы, возможно, захотите рассмотреть.
Например, , скажем, вы объявили List
в начале метода, который увеличился в размере до очень большого размера, но требовался лишь до середины выполнения метода. На этом этапе вы можете установить для ссылки List значение null
, чтобы позволить сборщику мусора потенциально вернуть этот объект до завершения метода (и ссылка в любом случае выпадает из области видимости).
Обратите внимание, что я редко использую этот метод на самом деле, но его стоит учитывать при работе с очень большими структурами данных.
System.gc();
Запускает сборщик мусора.
Вызов метода gc предполагает , что виртуальная машина Java приложит усилия для повторного использования неиспользуемых объектов, чтобы сделать память, которую они в настоящее время занимают, доступной для быстрого повторного использования. Когда управление возвращается из вызова метода, виртуальная машина Java сделала все возможное, чтобы освободить пространство для всех отброшенных объектов.
Не рекомендуется.
Изменить: Я написал исходный ответ в 2009 году. Сейчас 2015.
Сборщики мусора постоянно улучшаются за ~ 20 лет существования Java. На этом этапе, если вы вручную вызываете сборщик мусора, вы можете рассмотреть другие подходы:
Если вы действительно хотите выделить и освободить блок памяти, вы можете сделать это с помощью прямых ByteBuffers. Есть даже непереносимый способ освободить память.
Однако, как уже было сказано, то, что вам нужно освободить память в C, не означает, что это нужно делать.
Если вы считаете, что у вас действительно есть хороший пример использования free (), укажите его в вопросе, чтобы мы могли видеть, что вы собираетесь делать. Вполне вероятно, что есть способ получше.