Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
ff56cc0d
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看板
提交
ff56cc0d
编写于
10月 09, 2014
作者:
M
mgerdin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8055479: TLAB stability
Reviewed-by: brutisso, stefank, ahgross
上级
88a8817f
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
18 addition
and
10 deletion
+18
-10
src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
...ion/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+7
-1
src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
...ion/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
+4
-0
src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp
src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp
+2
-1
src/share/vm/memory/threadLocalAllocBuffer.cpp
src/share/vm/memory/threadLocalAllocBuffer.cpp
+4
-7
src/share/vm/memory/threadLocalAllocBuffer.hpp
src/share/vm/memory/threadLocalAllocBuffer.hpp
+1
-1
未找到文件。
src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
浏览文件 @
ff56cc0d
...
@@ -737,7 +737,7 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
...
@@ -737,7 +737,7 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
// Support for parallelizing survivor space rescan
// Support for parallelizing survivor space rescan
if
((
CMSParallelRemarkEnabled
&&
CMSParallelSurvivorRemarkEnabled
)
||
CMSParallelInitialMarkEnabled
)
{
if
((
CMSParallelRemarkEnabled
&&
CMSParallelSurvivorRemarkEnabled
)
||
CMSParallelInitialMarkEnabled
)
{
const
size_t
max_plab_samples
=
const
size_t
max_plab_samples
=
((
DefNewGeneration
*
)
_young_gen
)
->
max_survivor_size
()
/
MinTLABSize
;
((
DefNewGeneration
*
)
_young_gen
)
->
max_survivor_size
()
/
plab_sample_minimum_size
()
;
_survivor_plab_array
=
NEW_C_HEAP_ARRAY
(
ChunkArray
,
ParallelGCThreads
,
mtGC
);
_survivor_plab_array
=
NEW_C_HEAP_ARRAY
(
ChunkArray
,
ParallelGCThreads
,
mtGC
);
_survivor_chunk_array
=
NEW_C_HEAP_ARRAY
(
HeapWord
*
,
2
*
max_plab_samples
,
mtGC
);
_survivor_chunk_array
=
NEW_C_HEAP_ARRAY
(
HeapWord
*
,
2
*
max_plab_samples
,
mtGC
);
...
@@ -795,6 +795,12 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
...
@@ -795,6 +795,12 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
_inter_sweep_timer
.
start
();
// start of time
_inter_sweep_timer
.
start
();
// start of time
}
}
size_t
CMSCollector
::
plab_sample_minimum_size
()
{
// The default value of MinTLABSize is 2k, but there is
// no way to get the default value if the flag has been overridden.
return
MAX2
(
ThreadLocalAllocBuffer
::
min_size
()
*
HeapWordSize
,
2
*
K
);
}
const
char
*
ConcurrentMarkSweepGeneration
::
name
()
const
{
const
char
*
ConcurrentMarkSweepGeneration
::
name
()
const
{
return
"concurrent mark-sweep generation"
;
return
"concurrent mark-sweep generation"
;
}
}
...
...
src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
浏览文件 @
ff56cc0d
...
@@ -763,6 +763,10 @@ class CMSCollector: public CHeapObj<mtGC> {
...
@@ -763,6 +763,10 @@ class CMSCollector: public CHeapObj<mtGC> {
size_t
*
_cursor
;
size_t
*
_cursor
;
ChunkArray
*
_survivor_plab_array
;
ChunkArray
*
_survivor_plab_array
;
// A bounded minimum size of PLABs, should not return too small values since
// this will affect the size of the data structures used for parallel young gen rescan
size_t
plab_sample_minimum_size
();
// Support for marking stack overflow handling
// Support for marking stack overflow handling
bool
take_from_overflow_list
(
size_t
num
,
CMSMarkStack
*
to_stack
);
bool
take_from_overflow_list
(
size_t
num
,
CMSMarkStack
*
to_stack
);
bool
par_take_from_overflow_list
(
size_t
num
,
bool
par_take_from_overflow_list
(
size_t
num
,
...
...
src/share/vm/gc_implementation/shared/parGCAllocBuffer.hpp
浏览文件 @
ff56cc0d
...
@@ -62,7 +62,8 @@ public:
...
@@ -62,7 +62,8 @@ public:
ParGCAllocBuffer
(
size_t
word_sz
);
ParGCAllocBuffer
(
size_t
word_sz
);
static
const
size_t
min_size
()
{
static
const
size_t
min_size
()
{
return
ThreadLocalAllocBuffer
::
min_size
();
// Make sure that we return something that is larger than AlignmentReserve
return
align_object_size
(
MAX2
(
MinTLABSize
/
HeapWordSize
,
(
uintx
)
oopDesc
::
header_size
()))
+
AlignmentReserve
;
}
}
static
const
size_t
max_size
()
{
static
const
size_t
max_size
()
{
...
...
src/share/vm/memory/threadLocalAllocBuffer.cpp
浏览文件 @
ff56cc0d
...
@@ -235,22 +235,19 @@ void ThreadLocalAllocBuffer::startup_initialization() {
...
@@ -235,22 +235,19 @@ void ThreadLocalAllocBuffer::startup_initialization() {
}
}
size_t
ThreadLocalAllocBuffer
::
initial_desired_size
()
{
size_t
ThreadLocalAllocBuffer
::
initial_desired_size
()
{
size_t
init_sz
;
size_t
init_sz
=
0
;
if
(
TLABSize
>
0
)
{
if
(
TLABSize
>
0
)
{
init_sz
=
MIN2
(
TLABSize
/
HeapWordSize
,
max_size
());
init_sz
=
TLABSize
/
HeapWordSize
;
}
else
if
(
global_stats
()
==
NULL
)
{
}
else
if
(
global_stats
()
!=
NULL
)
{
// Startup issue - main thread initialized before heap initialized.
init_sz
=
min_size
();
}
else
{
// Initial size is a function of the average number of allocating threads.
// Initial size is a function of the average number of allocating threads.
unsigned
nof_threads
=
global_stats
()
->
allocating_threads_avg
();
unsigned
nof_threads
=
global_stats
()
->
allocating_threads_avg
();
init_sz
=
(
Universe
::
heap
()
->
tlab_capacity
(
myThread
())
/
HeapWordSize
)
/
init_sz
=
(
Universe
::
heap
()
->
tlab_capacity
(
myThread
())
/
HeapWordSize
)
/
(
nof_threads
*
target_refills
());
(
nof_threads
*
target_refills
());
init_sz
=
align_object_size
(
init_sz
);
init_sz
=
align_object_size
(
init_sz
);
init_sz
=
MIN2
(
MAX2
(
init_sz
,
min_size
()),
max_size
());
}
}
init_sz
=
MIN2
(
MAX2
(
init_sz
,
min_size
()),
max_size
());
return
init_sz
;
return
init_sz
;
}
}
...
...
src/share/vm/memory/threadLocalAllocBuffer.hpp
浏览文件 @
ff56cc0d
...
@@ -105,7 +105,7 @@ public:
...
@@ -105,7 +105,7 @@ public:
// do nothing. tlabs must be inited by initialize() calls
// do nothing. tlabs must be inited by initialize() calls
}
}
static
const
size_t
min_size
()
{
return
align_object_size
(
MinTLABSize
/
HeapWordSize
);
}
static
const
size_t
min_size
()
{
return
align_object_size
(
MinTLABSize
/
HeapWordSize
)
+
alignment_reserve
()
;
}
static
const
size_t
max_size
()
{
assert
(
_max_size
!=
0
,
"max_size not set up"
);
return
_max_size
;
}
static
const
size_t
max_size
()
{
assert
(
_max_size
!=
0
,
"max_size not set up"
);
return
_max_size
;
}
static
void
set_max_size
(
size_t
max_size
)
{
_max_size
=
max_size
;
}
static
void
set_max_size
(
size_t
max_size
)
{
_max_size
=
max_size
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录