1898 THROW(vmSymbols::java_lang_NullPointerException()); |
1898 THROW(vmSymbols::java_lang_NullPointerException()); |
1899 } |
1899 } |
1900 |
1900 |
1901 // Get the GCMemoryManager |
1901 // Get the GCMemoryManager |
1902 GCMemoryManager* mgr = get_gc_memory_manager_from_jobject(obj, CHECK); |
1902 GCMemoryManager* mgr = get_gc_memory_manager_from_jobject(obj, CHECK); |
1903 if (mgr->last_gc_stat() == NULL) { |
|
1904 gc_stat->gc_index = 0; |
|
1905 return; |
|
1906 } |
|
1907 |
1903 |
1908 // Make a copy of the last GC statistics |
1904 // Make a copy of the last GC statistics |
1909 // GC may occur while constructing the last GC information |
1905 // GC may occur while constructing the last GC information |
1910 int num_pools = MemoryService::num_memory_pools(); |
1906 int num_pools = MemoryService::num_memory_pools(); |
1911 GCStatInfo* stat = new GCStatInfo(num_pools); |
1907 GCStatInfo* stat = new GCStatInfo(num_pools); |
1912 stat->copy_stat(mgr->last_gc_stat()); |
1908 if (mgr->get_last_gc_stat(stat) == 0) { |
|
1909 gc_stat->gc_index = 0; |
|
1910 return; |
|
1911 } |
1913 |
1912 |
1914 gc_stat->gc_index = stat->gc_index(); |
1913 gc_stat->gc_index = stat->gc_index(); |
1915 gc_stat->start_time = Management::ticks_to_ms(stat->start_time()); |
1914 gc_stat->start_time = Management::ticks_to_ms(stat->start_time()); |
1916 gc_stat->end_time = Management::ticks_to_ms(stat->end_time()); |
1915 gc_stat->end_time = Management::ticks_to_ms(stat->end_time()); |
1917 |
1916 |