Mercurial > hg > graal-compiler
comparison src/share/vm/gc_interface/collectedHeap.hpp @ 941:8b46c4d82093
4957990: Perm heap bloat in JVM
Summary: Treat ProfileData in MDO's as a source of weak, not strong, roots. Fixes the bug for stop-world collection -- the case of concurrent collection will be fixed separately.
Reviewed-by: jcoomes, jmasa, kvn, never
author | ysr |
---|---|
date | Wed, 02 Sep 2009 00:04:29 -0700 |
parents | df6caf649ff7 |
children | 54b3b351d6f9 |
comparison
equal
deleted
inserted
replaced
940:8624da129f0b | 941:8b46c4d82093 |
---|---|
237 | 237 |
238 bool is_in_closed_subset_or_null(const void* p) const { | 238 bool is_in_closed_subset_or_null(const void* p) const { |
239 return p == NULL || is_in_closed_subset(p); | 239 return p == NULL || is_in_closed_subset(p); |
240 } | 240 } |
241 | 241 |
242 // XXX is_permanent() and is_in_permanent() should be better named | |
243 // to distinguish one from the other. | |
244 | |
242 // Returns "TRUE" if "p" is allocated as "permanent" data. | 245 // Returns "TRUE" if "p" is allocated as "permanent" data. |
243 // If the heap does not use "permanent" data, returns the same | 246 // If the heap does not use "permanent" data, returns the same |
244 // value is_in_reserved() would return. | 247 // value is_in_reserved() would return. |
245 // NOTE: this actually returns true if "p" is in reserved space | 248 // NOTE: this actually returns true if "p" is in reserved space |
246 // for the space not that it is actually allocated (i.e. in committed | 249 // for the space not that it is actually allocated (i.e. in committed |
247 // space). If you need the more conservative answer use is_permanent(). | 250 // space). If you need the more conservative answer use is_permanent(). |
248 virtual bool is_in_permanent(const void *p) const = 0; | 251 virtual bool is_in_permanent(const void *p) const = 0; |
249 | 252 |
253 bool is_in_permanent_or_null(const void *p) const { | |
254 return p == NULL || is_in_permanent(p); | |
255 } | |
256 | |
250 // Returns "TRUE" if "p" is in the committed area of "permanent" data. | 257 // Returns "TRUE" if "p" is in the committed area of "permanent" data. |
251 // If the heap does not use "permanent" data, returns the same | 258 // If the heap does not use "permanent" data, returns the same |
252 // value is_in() would return. | 259 // value is_in() would return. |
253 virtual bool is_permanent(const void *p) const = 0; | 260 virtual bool is_permanent(const void *p) const = 0; |
254 | 261 |
255 bool is_in_permanent_or_null(const void *p) const { | 262 bool is_permanent_or_null(const void *p) const { |
256 return p == NULL || is_in_permanent(p); | 263 return p == NULL || is_permanent(p); |
257 } | 264 } |
258 | 265 |
259 // Returns "TRUE" if "p" is a method oop in the | 266 // Returns "TRUE" if "p" is a method oop in the |
260 // current heap, with high probability. This predicate | 267 // current heap, with high probability. This predicate |
261 // is not stable, in general. | 268 // is not stable, in general. |