Показаны сообщения с ярлыком GC. Показать все сообщения
Показаны сообщения с ярлыком GC. Показать все сообщения

пятница, 21 января 2011 г.

Mostly Concurrent Compaction for Mark-Sweep GC

Mostly Concurrent Compaction for Mark-Sweep GC

ABSTRACT
A memory manager that does not move objects may suffer from memory fragmentation. Compaction is an efficient, and sometimes inevitable, mechanism for reducing fragmentation. A Mark-Sweep garbage collector must occasionally execute a compaction, usually while the application is suspended. Compaction during pause time can have detrimental effects for interactive applications that require guarantees for maximal pause time. This work presents a method for reducing the pause time created by compaction at a negligible throughput hit. The solution is most suitable when added to a Mark-Sweep garbage collector.
Compaction normally consists of two major activities: the moving of objects and the update of all the objects’ references to the new locations. We present a method for executing the reference updates concurrently, thus eliminating a substantial portion of the pause time hit. To reduce the time for moving objects in each compaction, we use the existing technique of incremental compaction, but select the optimal area to compact. Selecting the area is done after executing the mark and sweep phases, and is based on their results.
We implemented our compaction on top of the IBM J9 JVM V2.2, and present measurements of its effect on pause time, throughput, and mutator utilization. We show that our compaction is indeed an efficient fragmentation reduction tool, and that it improves the performance of a few of the benchmarks we used, with very little increase in the pause time (typically far below the cost of the mark phase).

P.S. Найдено тут. Проект ManagedRuntime.org интересен сам по себе. Создан компанией Azul, как я опнял, они частично переписали OpenJDK + подсистему работы с памятью Linux.

пятница, 18 июня 2010 г.

The Hotspot Java Virtual Machine

In slides The Hotspot Java Virtual Machine there is many links to GC books/articles.

понедельник, 19 апреля 2010 г.

The Memory Management Glossary

http://www.memorymanagement.org/glossary/ - big memory management glossary with something about 400 terms.

Glossary articles contains links to The Memory Management Reference Full Bibliography.

Bibliography contains many "strange" articles like this "NREVERSAL of Fortune -- The Thermodynamics of Garbage Collection" [PDF].

четверг, 17 декабря 2009 г.

Как finalize() может быть причиной OutOfMemoryError

ImageInputStreamImpl still uses a finalize() which causes java.lang.OutOfMemoryError.

Это к тому, что объекты классов с переопределенным finalize() убираются заметно "медленнее" коллектором.

среда, 16 декабря 2009 г.

The Sun Labs JavaTM Technology Research Group

В составе SUN обнаружена The Sun Labs JavaTM Technology Research Group.

MISSION

The Sun Labs JavaTM Technology Research Group (formerly Java Topics) is working on advanced technologies that may be useful for the Java platform nine months and beyond. We are currently focused on high performance implementations of the Java virtual machine.

Parallel Garbage Collection for Shared Memory Multiprocessors

Parallel Garbage Collection for Shared Memory Multiprocessors from Christine H. Flood and David Detlefs, Sun Microsystems Laboratories; Nir Shavit, Tel-Aviv University; and Xiolan Zhang, Harvard University. Описывает реальные эксперименты с GC с Java, но я пока не выяснил эти ли продукты в JDK.

Abstract
We present a multiprocessor "stop-the-world" garbage collection framework that provides multiple forms of load balancing. Our parallel collectors use this framework to balance the work of root scanning, using static overpartitioning, and also to balance the work of tracing the object graph, using a form of dynamic load balancing called work stealing. We describe two collectors written using this framework: pSemispaces, a parallel semispace collector, and pMarkcompact, a parallel markcompact collector.

Presenting the Permanent Generation

Presenting the Permanent Generation from Jon Masamitsu's Weblog.

пятница, 11 декабря 2009 г.

[Personality]: Jon Masamitsu (GC)

Блог Jon Masamitsu содержит просто огромное количество информации по GC в HotSpot.

Например тут он рассказывает про допустимые комбинации коллекторов в Young и Old поколениях:
"
- UseSerialGC is "Serial" + "Serial Old"
- UseParNewGC is "ParNew" + "Serial Old"
- UseConcMarkSweepGC is "ParNew" + "CMS" + "Serial Old". "CMS" is used most of the time to collect the tenured generation. "Serial Old" is used when a concurrent mode failure occurs.
- UseParallelGC is "Parallel Scavenge" + "Serial Old"
- UseParallelOldGC is "Parallel Scavenge" + "Parallel Old""

Опции GC

Тут документ, где собрано вместе несколько десятков опций GC.

понедельник, 23 ноября 2009 г.

PJP: Parallel/Concurrent GC

Небольшое замечание по сложившейся терминологии для описания типа GC.
Parallel - значит представляет собой несколько ПАРАЛЛЕЛЬНЫХ потоков. Т.е. сам уборщик мусора состоит из нескольких потоков, которые все вместе лопатят кучу.
Concurrent - значит работает ОДНОВРЕМЕННО с потоками пользователя. Т.е. не требуется делать паузу всей системы(stop-the-world).

Как видно, понятия совершенно независимые. Т.е. каждая конкретная реализация уборщика может обладать этими свойствами независимо.

PJP: Garbage Collector (GC)

После смерти Одиссей, как один из величайших людей, прежде чем выпить воды из Реки Забвения и забыть все воспоминания (кануть в Лету) для возвращения на Землю в новом обличии имел право выбрать кем ему быть в следующей жизни ...

Река Забвения (Лета) в Java зовется Garbage Collector. Она стирает все прежние предназначение участков ОЗУ и обновленными возвращает их к жизни.