mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8072774: bigapps/Weblogic+medrec/nowarnings fails due to CodeHeap 'profiled nmethods' exhaustion
Store profiled code in the non-profiled code heap (and vice versa) if the code cache is really full. Reviewed-by: kvn, iveresov
This commit is contained in:
parent
7208abd71e
commit
ccaded21d2
1 changed files with 16 additions and 3 deletions
|
@ -32,15 +32,28 @@ import sun.hotspot.WhiteBox;
|
||||||
|
|
||||||
public enum BlobType {
|
public enum BlobType {
|
||||||
// Execution level 1 and 4 (non-profiled) nmethods (including native nmethods)
|
// Execution level 1 and 4 (non-profiled) nmethods (including native nmethods)
|
||||||
MethodNonProfiled(0, "CodeHeap 'non-profiled nmethods'", "NonProfiledCodeHeapSize"),
|
MethodNonProfiled(0, "CodeHeap 'non-profiled nmethods'", "NonProfiledCodeHeapSize") {
|
||||||
|
@Override
|
||||||
|
public boolean allowTypeWhenOverflow(BlobType type) {
|
||||||
|
return super.allowTypeWhenOverflow(type)
|
||||||
|
|| type == BlobType.MethodProfiled;
|
||||||
|
}
|
||||||
|
},
|
||||||
// Execution level 2 and 3 (profiled) nmethods
|
// Execution level 2 and 3 (profiled) nmethods
|
||||||
MethodProfiled(1, "CodeHeap 'profiled nmethods'", "ProfiledCodeHeapSize"),
|
MethodProfiled(1, "CodeHeap 'profiled nmethods'", "ProfiledCodeHeapSize") {
|
||||||
|
@Override
|
||||||
|
public boolean allowTypeWhenOverflow(BlobType type) {
|
||||||
|
return super.allowTypeWhenOverflow(type)
|
||||||
|
|| type == BlobType.MethodNonProfiled;
|
||||||
|
}
|
||||||
|
},
|
||||||
// Non-nmethods like Buffers, Adapters and Runtime Stubs
|
// Non-nmethods like Buffers, Adapters and Runtime Stubs
|
||||||
NonNMethod(2, "CodeHeap 'non-nmethods'", "NonNMethodCodeHeapSize") {
|
NonNMethod(2, "CodeHeap 'non-nmethods'", "NonNMethodCodeHeapSize") {
|
||||||
@Override
|
@Override
|
||||||
public boolean allowTypeWhenOverflow(BlobType type) {
|
public boolean allowTypeWhenOverflow(BlobType type) {
|
||||||
return super.allowTypeWhenOverflow(type)
|
return super.allowTypeWhenOverflow(type)
|
||||||
|| type == BlobType.MethodNonProfiled;
|
|| type == BlobType.MethodNonProfiled
|
||||||
|
|| type == BlobType.MethodProfiled;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// All types (No code cache segmentation)
|
// All types (No code cache segmentation)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue