Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
a576f5de
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
a576f5de
编写于
1月 23, 2014
作者:
S
sjiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6980984: java/lang/management/MemoryMXBean/MemoryManagement is not robust when getMax() returns -1
Reviewed-by: jbachorik, dfuchs
上级
94d30dcb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
12 deletion
+20
-12
test/java/lang/management/MemoryMXBean/MemoryManagement.java
test/java/lang/management/MemoryMXBean/MemoryManagement.java
+20
-12
未找到文件。
test/java/lang/management/MemoryMXBean/MemoryManagement.java
浏览文件 @
a576f5de
/*
/*
* Copyright (c) 2003, 201
0
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
*
* This code is free software; you can redistribute it and/or modify it
* This code is free software; you can redistribute it and/or modify it
...
@@ -23,9 +23,9 @@
...
@@ -23,9 +23,9 @@
/*
/*
* @test
* @test
* @bug 4530538
* @bug 4530538
6980984
* @summary Basic unit test of memory management testing:
* @summary Basic unit test of memory management testing:
* 1) setUsa
t
geThreshold() and getUsageThreshold()
* 1) setUsageThreshold() and getUsageThreshold()
* 2) test low memory detection on the old generation.
* 2) test low memory detection on the old generation.
*
*
* @author Mandy Chung
* @author Mandy Chung
...
@@ -40,16 +40,18 @@ import javax.management.*;
...
@@ -40,16 +40,18 @@ import javax.management.*;
import
javax.management.openmbean.CompositeData
;
import
javax.management.openmbean.CompositeData
;
public
class
MemoryManagement
{
public
class
MemoryManagement
{
private
static
MemoryMXBean
mm
=
ManagementFactory
.
getMemoryMXBean
();
private
static
final
MemoryMXBean
mm
=
ManagementFactory
.
getMemoryMXBean
();
private
static
List
pools
=
ManagementFactory
.
getMemoryPoolMXBeans
();
private
static
final
List
pools
=
private
static
List
managers
=
ManagementFactory
.
getMemoryManagerMXBeans
();
Collections
.
synchronizedList
(
ManagementFactory
.
getMemoryPoolMXBeans
());
private
static
MemoryPoolMXBean
mpool
=
null
;
private
static
final
List
managers
=
private
static
boolean
trace
=
false
;
Collections
.
synchronizedList
(
ManagementFactory
.
getMemoryManagerMXBeans
());
private
static
boolean
testFailed
=
false
;
private
static
volatile
MemoryPoolMXBean
mpool
=
null
;
private
static
volatile
boolean
trace
=
false
;
private
static
volatile
boolean
testFailed
=
false
;
private
static
final
int
NUM_CHUNKS
=
2
;
private
static
final
int
NUM_CHUNKS
=
2
;
private
static
long
chunkSize
;
private
static
volatile
long
chunkSize
;
private
static
volatile
int
listenerInvoked
=
0
;
private
static
int
listenerInvoked
=
0
;
static
class
SensorListener
implements
NotificationListener
{
static
class
SensorListener
implements
NotificationListener
{
public
void
handleNotification
(
Notification
notif
,
Object
handback
)
{
public
void
handleNotification
(
Notification
notif
,
Object
handback
)
{
String
type
=
notif
.
getType
();
String
type
=
notif
.
getType
();
...
@@ -101,7 +103,13 @@ public class MemoryManagement {
...
@@ -101,7 +103,13 @@ public class MemoryManagement {
// Now set threshold
// Now set threshold
MemoryUsage
mu
=
mpool
.
getUsage
();
MemoryUsage
mu
=
mpool
.
getUsage
();
chunkSize
=
(
mu
.
getMax
()
-
mu
.
getUsed
())
/
20
;
long
max
=
mu
.
getMax
();
if
(
max
!=
-
1
)
{
chunkSize
=
(
max
-
mu
.
getUsed
())
/
20
;
}
else
{
// 6980984
System
.
gc
();
chunkSize
=
Runtime
.
getRuntime
().
freeMemory
()/
20
;
}
newThreshold
=
mu
.
getUsed
()
+
(
chunkSize
*
NUM_CHUNKS
);
newThreshold
=
mu
.
getUsed
()
+
(
chunkSize
*
NUM_CHUNKS
);
System
.
out
.
println
(
"Setting threshold for "
+
mpool
.
getName
()
+
System
.
out
.
println
(
"Setting threshold for "
+
mpool
.
getName
()
+
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录