Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
1cb7ed62
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看板
提交
1cb7ed62
编写于
11月 15, 2010
作者:
J
jmasa
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
acef01f4
c38c069b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
4 deletion
+12
-4
src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
...entation/concurrentMarkSweep/compactibleFreeListSpace.cpp
+9
-3
src/share/vm/memory/defNewGeneration.cpp
src/share/vm/memory/defNewGeneration.cpp
+3
-1
未找到文件。
src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
浏览文件 @
1cb7ed62
...
@@ -1093,7 +1093,8 @@ bool CompactibleFreeListSpace::block_is_obj(const HeapWord* p) const {
...
@@ -1093,7 +1093,8 @@ bool CompactibleFreeListSpace::block_is_obj(const HeapWord* p) const {
// perm_gen_verify_bit_map where we store the "deadness" information if
// perm_gen_verify_bit_map where we store the "deadness" information if
// we did not sweep the perm gen in the most recent previous GC cycle.
// we did not sweep the perm gen in the most recent previous GC cycle.
bool
CompactibleFreeListSpace
::
obj_is_alive
(
const
HeapWord
*
p
)
const
{
bool
CompactibleFreeListSpace
::
obj_is_alive
(
const
HeapWord
*
p
)
const
{
assert
(
block_is_obj
(
p
),
"The address should point to an object"
);
assert
(
block_is_obj
(
p
),
"The address should point to an object"
);
assert
(
SafepointSynchronize
::
is_at_safepoint
(),
"Else races are possible"
);
// If we're sweeping, we use object liveness information from the main bit map
// If we're sweeping, we use object liveness information from the main bit map
// for both perm gen and old gen.
// for both perm gen and old gen.
...
@@ -1102,9 +1103,14 @@ bool CompactibleFreeListSpace::obj_is_alive(const HeapWord* p) const {
...
@@ -1102,9 +1103,14 @@ bool CompactibleFreeListSpace::obj_is_alive(const HeapWord* p) const {
// main marking bit map (live_map below) is locked,
// main marking bit map (live_map below) is locked,
// OR we're in other phases and perm_gen_verify_bit_map (dead_map below)
// OR we're in other phases and perm_gen_verify_bit_map (dead_map below)
// is stable, because it's mutated only in the sweeping phase.
// is stable, because it's mutated only in the sweeping phase.
// NOTE: This method is also used by jmap where, if class unloading is
// off, the results can return "false" for legitimate perm objects,
// when we are not in the midst of a sweeping phase, which can result
// in jmap not reporting certain perm gen objects. This will be moot
// if/when the perm gen goes away in the future.
if
(
_collector
->
abstract_state
()
==
CMSCollector
::
Sweeping
)
{
if
(
_collector
->
abstract_state
()
==
CMSCollector
::
Sweeping
)
{
CMSBitMap
*
live_map
=
_collector
->
markBitMap
();
CMSBitMap
*
live_map
=
_collector
->
markBitMap
();
return
live_map
->
isMarked
((
HeapWord
*
)
p
);
return
live_map
->
par_
isMarked
((
HeapWord
*
)
p
);
}
else
{
}
else
{
// If we're not currently sweeping and we haven't swept the perm gen in
// If we're not currently sweeping and we haven't swept the perm gen in
// the previous concurrent cycle then we may have dead but unswept objects
// the previous concurrent cycle then we may have dead but unswept objects
...
@@ -2266,7 +2272,7 @@ void CompactibleFreeListSpace::split(size_t from, size_t to1) {
...
@@ -2266,7 +2272,7 @@ void CompactibleFreeListSpace::split(size_t from, size_t to1) {
}
}
void
CompactibleFreeListSpace
::
print
()
const
{
void
CompactibleFreeListSpace
::
print
()
const
{
Space
::
print_on
(
tty
);
print_on
(
tty
);
}
}
void
CompactibleFreeListSpace
::
prepare_for_verify
()
{
void
CompactibleFreeListSpace
::
prepare_for_verify
()
{
...
...
src/share/vm/memory/defNewGeneration.cpp
浏览文件 @
1cb7ed62
...
@@ -838,7 +838,9 @@ void DefNewGeneration::gc_epilogue(bool full) {
...
@@ -838,7 +838,9 @@ void DefNewGeneration::gc_epilogue(bool full) {
gch
->
incremental_collection_failed
())
{
gch
->
incremental_collection_failed
())
{
seen_incremental_collection_failed
=
true
;
seen_incremental_collection_failed
=
true
;
}
else
if
(
seen_incremental_collection_failed
)
{
}
else
if
(
seen_incremental_collection_failed
)
{
assert
(
!
gch
->
incremental_collection_failed
(),
"Twice in a row"
);
assert
(
gch
->
gc_cause
()
==
GCCause
::
_scavenge_alot
||
!
gch
->
incremental_collection_failed
(),
"Twice in a row"
);
seen_incremental_collection_failed
=
false
;
seen_incremental_collection_failed
=
false
;
}
}
#endif // ASSERT
#endif // ASSERT
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录