Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
214fc363
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
214fc363
编写于
11月 20, 2012
作者:
C
coleenp
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
0685b2e5
372b7e04
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
29 addition
and
6 deletion
+29
-6
src/share/vm/services/memSnapshot.cpp
src/share/vm/services/memSnapshot.cpp
+12
-6
src/share/vm/services/memSnapshot.hpp
src/share/vm/services/memSnapshot.hpp
+17
-0
未找到文件。
src/share/vm/services/memSnapshot.cpp
浏览文件 @
214fc363
...
...
@@ -261,17 +261,19 @@ bool VMMemPointerIterator::remove_released_region(MemPointerRecord* rec) {
VMMemRegion
*
cur
=
(
VMMemRegion
*
)
current
();
assert
(
cur
->
is_reserved_region
()
&&
cur
->
contains_region
(
rec
),
"Sanity check"
);
if
(
rec
->
is_same_region
(
cur
))
{
// release whole reserved region
#ifdef ASSERT
VMMemRegion
*
next_reg
=
(
VMMemRegion
*
)
peek_next
();
// should not have any committed memory in this reserved region
assert
(
next_reg
==
NULL
||
!
next_reg
->
is_committed_region
(),
"Sanity check"
);
VMMemRegion
*
next_region
=
(
VMMemRegion
*
)
peek_next
();
// should not have any committed memory in this reserved region
assert
(
next_region
==
NULL
||
!
next_region
->
is_committed_region
(),
"Sanity check"
);
#endif
if
(
rec
->
is_same_region
(
cur
))
{
remove
();
}
else
if
(
rec
->
addr
()
==
cur
->
addr
()
||
rec
->
addr
()
+
rec
->
size
()
==
cur
->
addr
()
+
cur
->
size
())
{
// released region is at either end of this region
cur
->
exclude_region
(
rec
->
addr
(),
rec
->
size
());
assert
(
check_reserved_region
(),
"Integrity check"
);
}
else
{
// split the reserved region and release the middle
address
high_addr
=
cur
->
addr
()
+
cur
->
size
();
size_t
sz
=
high_addr
-
rec
->
addr
();
...
...
@@ -280,10 +282,14 @@ bool VMMemPointerIterator::remove_released_region(MemPointerRecord* rec) {
if
(
MemTracker
::
track_callsite
())
{
MemPointerRecordEx
tmp
(
rec
->
addr
()
+
rec
->
size
(),
cur
->
flags
(),
sz
,
((
VMMemRegionEx
*
)
cur
)
->
pc
());
return
insert_reserved_region
(
&
tmp
);
bool
ret
=
insert_reserved_region
(
&
tmp
);
assert
(
!
ret
||
check_reserved_region
(),
"Integrity check"
);
return
ret
;
}
else
{
MemPointerRecord
tmp
(
rec
->
addr
()
+
rec
->
size
(),
cur
->
flags
(),
sz
);
return
insert_reserved_region
(
&
tmp
);
bool
ret
=
insert_reserved_region
(
&
tmp
);
assert
(
!
ret
||
check_reserved_region
(),
"Integrity check"
);
return
ret
;
}
}
return
true
;
...
...
src/share/vm/services/memSnapshot.hpp
浏览文件 @
214fc363
...
...
@@ -146,6 +146,23 @@ class VMMemPointerIterator : public MemPointerIterator {
// reset current position
inline
void
reset
()
{
_pos
=
0
;
}
#ifdef ASSERT
// check integrity of records on current reserved memory region.
bool
check_reserved_region
()
{
VMMemRegion
*
reserved_region
=
(
VMMemRegion
*
)
current
();
assert
(
reserved_region
!=
NULL
&&
reserved_region
->
is_reserved_region
(),
"Sanity check"
);
// all committed regions that follow current reserved region, should all
// belong to the reserved region.
VMMemRegion
*
next_region
=
(
VMMemRegion
*
)
next
();
for
(;
next_region
!=
NULL
&&
next_region
->
is_committed_region
();
next_region
=
(
VMMemRegion
*
)
next
()
)
{
if
(
!
reserved_region
->
contains_region
(
next_region
))
{
return
false
;
}
}
return
true
;
}
virtual
bool
is_dup_pointer
(
const
MemPointer
*
ptr1
,
const
MemPointer
*
ptr2
)
const
{
VMMemRegion
*
p1
=
(
VMMemRegion
*
)
ptr1
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录