8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/g1/g1FullGCScope.hpp"
27
28 G1FullGCScope::G1FullGCScope(bool explicit_gc, bool clear_soft) :
29 _rm(),
30 _explicit_gc(explicit_gc),
31 _g1h(G1CollectedHeap::heap()),
32 _gc_id(),
33 _svc_marker(SvcGCMarker::FULL),
34 _timer(),
35 _tracer(),
36 _active(),
37 _cpu_time(),
38 _soft_refs(clear_soft, _g1h->collector_policy()),
39 _memory_stats(true, _g1h->gc_cause()),
40 _collector_stats(_g1h->g1mm()->full_collection_counters()),
41 _heap_transition(_g1h) {
42 _timer.register_gc_start();
43 _tracer.report_gc_start(_g1h->gc_cause(), _timer.gc_start());
44 _g1h->pre_full_gc_dump(&_timer);
45 _g1h->trace_heap_before_gc(&_tracer);
46 }
47
48 G1FullGCScope::~G1FullGCScope() {
49 // We must call G1MonitoringSupport::update_sizes() in the same scoping level
50 // as an active TraceMemoryManagerStats object (i.e. before the destructor for the
51 // TraceMemoryManagerStats is called) so that the G1 memory pools are updated
52 // before any GC notifications are raised.
53 _g1h->g1mm()->update_sizes();
54 _g1h->trace_heap_after_gc(&_tracer);
55 _g1h->post_full_gc_dump(&_timer);
56 _timer.register_gc_end();
57 _tracer.report_gc_end(_timer.gc_end(), _timer.time_partitions());
58 }
59
|
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/g1/g1FullGCScope.hpp"
27
28 G1FullGCScope::G1FullGCScope(GCMemoryManager* memory_manager, bool explicit_gc, bool clear_soft) :
29 _rm(),
30 _explicit_gc(explicit_gc),
31 _g1h(G1CollectedHeap::heap()),
32 _gc_id(),
33 _svc_marker(SvcGCMarker::FULL),
34 _timer(),
35 _tracer(),
36 _active(),
37 _cpu_time(),
38 _soft_refs(clear_soft, _g1h->collector_policy()),
39 _memory_stats(memory_manager, _g1h->gc_cause()),
40 _collector_stats(_g1h->g1mm()->full_collection_counters()),
41 _heap_transition(_g1h) {
42 _timer.register_gc_start();
43 _tracer.report_gc_start(_g1h->gc_cause(), _timer.gc_start());
44 _g1h->pre_full_gc_dump(&_timer);
45 _g1h->trace_heap_before_gc(&_tracer);
46 }
47
48 G1FullGCScope::~G1FullGCScope() {
49 // We must call G1MonitoringSupport::update_sizes() in the same scoping level
50 // as an active TraceMemoryManagerStats object (i.e. before the destructor for the
51 // TraceMemoryManagerStats is called) so that the G1 memory pools are updated
52 // before any GC notifications are raised.
53 _g1h->g1mm()->update_sizes();
54 _g1h->trace_heap_after_gc(&_tracer);
55 _g1h->post_full_gc_dump(&_timer);
56 _timer.register_gc_end();
57 _tracer.report_gc_end(_timer.gc_end(), _timer.time_partitions());
58 }
59
|