Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
813d5b79
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
813d5b79
编写于
10月 01, 2010
作者:
J
johnc
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
52b8d7bd
9747275e
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
52 addition
and
9 deletion
+52
-9
src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp
...e/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp
+13
-1
src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp
...e/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp
+4
-0
src/share/vm/includeDB_core
src/share/vm/includeDB_core
+1
-0
src/share/vm/memory/permGen.cpp
src/share/vm/memory/permGen.cpp
+21
-6
src/share/vm/memory/permGen.hpp
src/share/vm/memory/permGen.hpp
+13
-2
未找到文件。
src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp
浏览文件 @
813d5b79
/*
* Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007,
2010,
Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -50,6 +50,18 @@ HeapWord* CMSPermGen::mem_allocate(size_t size) {
}
}
HeapWord
*
CMSPermGen
::
request_expand_and_allocate
(
Generation
*
gen
,
size_t
size
,
GCCause
::
Cause
prev_cause
/* ignored */
)
{
HeapWord
*
obj
=
gen
->
expand_and_allocate
(
size
,
false
);
if
(
gen
->
capacity
()
>=
_capacity_expansion_limit
)
{
set_capacity_expansion_limit
(
gen
->
capacity
()
+
MaxPermHeapExpansion
);
assert
(((
ConcurrentMarkSweepGeneration
*
)
gen
)
->
should_concurrent_collect
(),
"Should kick off a collection if one not in progress"
);
}
return
obj
;
}
void
CMSPermGen
::
compute_new_size
()
{
_gen
->
compute_new_size
();
}
...
...
src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp
浏览文件 @
813d5b79
...
...
@@ -33,6 +33,10 @@ class CMSPermGen: public PermGen {
// The "generation" view.
ConcurrentMarkSweepGeneration
*
_gen
;
// Override default implementation from PermGen
virtual
HeapWord
*
request_expand_and_allocate
(
Generation
*
gen
,
size_t
size
,
GCCause
::
Cause
prev_cause
);
public:
CMSPermGen
(
ReservedSpace
rs
,
size_t
initial_byte_size
,
CardTableRS
*
ct
,
FreeBlockDictionary
::
DictionaryChoice
);
...
...
src/share/vm/includeDB_core
浏览文件 @
813d5b79
...
...
@@ -3456,6 +3456,7 @@ permGen.hpp gcCause.hpp
permGen.hpp generation.hpp
permGen.hpp handles.hpp
permGen.hpp iterator.hpp
permGen.hpp mutexLocker.hpp
permGen.hpp virtualspace.hpp
placeholders.cpp fieldType.hpp
...
...
src/share/vm/memory/permGen.cpp
浏览文件 @
813d5b79
/*
* Copyright (c) 2000, 20
09
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 20
10
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -25,6 +25,17 @@
#include "incls/_precompiled.incl"
#include "incls/_permGen.cpp.incl"
HeapWord
*
PermGen
::
request_expand_and_allocate
(
Generation
*
gen
,
size_t
size
,
GCCause
::
Cause
prev_cause
)
{
if
(
gen
->
capacity
()
<
_capacity_expansion_limit
||
prev_cause
!=
GCCause
::
_no_gc
||
UseG1GC
)
{
// last disjunct is a temporary hack for G1
return
gen
->
expand_and_allocate
(
size
,
false
);
}
// We have reached the limit of capacity expansion where
// we will not expand further until a GC is done; request denied.
return
NULL
;
}
HeapWord
*
PermGen
::
mem_allocate_in_gen
(
size_t
size
,
Generation
*
gen
)
{
GCCause
::
Cause
next_cause
=
GCCause
::
_permanent_generation_full
;
GCCause
::
Cause
prev_cause
=
GCCause
::
_no_gc
;
...
...
@@ -37,10 +48,14 @@ HeapWord* PermGen::mem_allocate_in_gen(size_t size, Generation* gen) {
if
((
obj
=
gen
->
allocate
(
size
,
false
))
!=
NULL
)
{
return
obj
;
}
if
(
gen
->
capacity
()
<
_capacity_expansion_limit
||
prev_cause
!=
GCCause
::
_no_gc
)
{
obj
=
gen
->
expand_and_allocate
(
size
,
false
);
}
// Attempt to expand and allocate the requested space:
// specific subtypes may use specific policy to either expand
// or not. The default policy (see above) is to expand until
// _capacity_expansion_limit, and no further unless a GC is done.
// Concurrent collectors may decide to kick off a concurrent
// collection under appropriate conditions.
obj
=
request_expand_and_allocate
(
gen
,
size
,
prev_cause
);
if
(
obj
!=
NULL
||
prev_cause
==
GCCause
::
_last_ditch_collection
)
{
return
obj
;
}
...
...
@@ -119,5 +134,5 @@ void CompactingPermGen::compute_new_size() {
if
(
_gen
->
capacity
()
>
desired_capacity
)
{
_gen
->
shrink
(
_gen
->
capacity
()
-
desired_capacity
);
}
_capacity_expansion_limit
=
_gen
->
capacity
()
+
MaxPermHeapExpansion
;
set_capacity_expansion_limit
(
_gen
->
capacity
()
+
MaxPermHeapExpansion
)
;
}
src/share/vm/memory/permGen.hpp
浏览文件 @
813d5b79
/*
* Copyright (c) 2000, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 20
10
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -30,15 +30,26 @@ class Generation;
class
GenRemSet
;
class
CSpaceCounters
;
// PermGen models the part of the heap
// PermGen models the part of the heap
used to allocate class meta-data.
class
PermGen
:
public
CHeapObj
{
friend
class
VMStructs
;
protected:
size_t
_capacity_expansion_limit
;
// maximum expansion allowed without a
// full gc occurring
void
set_capacity_expansion_limit
(
size_t
limit
)
{
assert_locked_or_safepoint
(
Heap_lock
);
_capacity_expansion_limit
=
limit
;
}
HeapWord
*
mem_allocate_in_gen
(
size_t
size
,
Generation
*
gen
);
// Along with mem_allocate_in_gen() above, implements policy for
// "scheduling" allocation/expansion/collection of the perm gen.
// The virtual method request_...() below can be overridden by
// subtypes that want to implement a different expansion/collection
// policy from the default provided.
virtual
HeapWord
*
request_expand_and_allocate
(
Generation
*
gen
,
size_t
size
,
GCCause
::
Cause
prev_cause
);
public:
enum
Name
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录