Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
83857b56
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看板
提交
83857b56
编写于
7月 23, 2013
作者:
I
igerasim
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8016838: improvement of RedefineBigClass and RetransformBigClass tests
Reviewed-by: dcubed
上级
fb0d8ca1
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
95 addition
and
6 deletion
+95
-6
test/ProblemList.txt
test/ProblemList.txt
+5
-0
test/java/lang/instrument/RedefineBigClass.sh
test/java/lang/instrument/RedefineBigClass.sh
+2
-2
test/java/lang/instrument/RedefineBigClassApp.java
test/java/lang/instrument/RedefineBigClassApp.java
+43
-1
test/java/lang/instrument/RetransformBigClass.sh
test/java/lang/instrument/RetransformBigClass.sh
+2
-2
test/java/lang/instrument/RetransformBigClassApp.java
test/java/lang/instrument/RetransformBigClassApp.java
+43
-1
未找到文件。
test/ProblemList.txt
浏览文件 @
83857b56
...
...
@@ -137,6 +137,11 @@ java/lang/Class/asSubclass/BasicUnit.java generic-all
# 8015780
java/lang/reflect/Method/GenericStringTest.java generic-all
# 8019845 due to memleak not related to the tested fix
java/lang/instrument/RedefineBigClass.sh linux-x64
java/lang/instrument/RetransformBigClass.sh linux-x64
############################################################################
# jdk_management
...
...
test/java/lang/instrument/RedefineBigClass.sh
浏览文件 @
83857b56
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011,
2013
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
...
...
@@ -22,7 +22,7 @@
#
# @test
# @bug 7121600
# @bug 7121600
8016838
# @summary Redefine a big class.
# @author Daniel D. Daugherty
#
...
...
test/java/lang/instrument/RedefineBigClassApp.java
浏览文件 @
83857b56
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011,
2013
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
...
...
@@ -21,12 +21,21 @@
* questions.
*/
import
java.io.*
;
public
class
RedefineBigClassApp
{
/**
* Memory leak is assumed, if application consumes more than specified amount of memory during its execution.
* The number is given in Kb.
*/
private
static
final
long
MEM_LEAK_THRESHOLD
=
32
*
1024
;
// 32Mb
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
"Creating instance of "
+
RedefineBigClassAgent
.
clz
);
RedefineBigClassAgent
.
clz
.
newInstance
();
long
vMemBefore
=
getVMemSize
();
int
count
=
0
;
while
(!
RedefineBigClassAgent
.
doneRedefining
)
{
System
.
out
.
println
(
"App loop count: "
+
++
count
);
...
...
@@ -37,6 +46,39 @@ public class RedefineBigClassApp {
}
System
.
out
.
println
(
"App looped "
+
count
+
" times."
);
long
vMemAfter
=
getVMemSize
();
if
(
vMemBefore
==
0
||
vMemAfter
==
0
)
{
System
.
err
.
println
(
"WARNING: Cannot perform memory leak detection on this OS"
);
}
else
{
long
vMemDelta
=
vMemAfter
-
vMemBefore
;
if
(
vMemDelta
>
MEM_LEAK_THRESHOLD
)
{
System
.
err
.
println
(
"FAIL: Virtual memory usage increased by "
+
vMemDelta
+
"Kb "
+
"(greater than "
+
MEM_LEAK_THRESHOLD
+
"Kb)"
);
System
.
exit
(
1
);
}
System
.
err
.
println
(
"PASS: Virtual memory usage increased by "
+
vMemDelta
+
"Kb "
+
"(not greater than "
+
MEM_LEAK_THRESHOLD
+
"Kb)"
);
}
System
.
exit
(
0
);
}
/**
* Return size of virtual memory allocated to the process in Kb.
* Linux specific. On other platforms and in case of any errors return 0.
*/
private
static
long
getVMemSize
()
{
// Refer to the Linux proc(5) man page for details about /proc/self/stat file
//
// In short, this file contains status information about the current process
// written in one line. The fields are separated with spaces.
// The 23rd field is defined as 'vsize %lu Virtual memory size in bytes'
try
(
FileReader
fileReader
=
new
FileReader
(
"/proc/self/stat"
);
BufferedReader
bufferedReader
=
new
BufferedReader
(
fileReader
))
{
String
line
=
bufferedReader
.
readLine
();
return
Long
.
parseLong
(
line
.
split
(
" "
)[
22
])
/
1024
;
}
catch
(
Exception
ex
)
{}
return
0
;
}
}
test/java/lang/instrument/RetransformBigClass.sh
浏览文件 @
83857b56
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2011,
2013
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
...
...
@@ -22,7 +22,7 @@
#
# @test
# @bug 7122253
# @bug 7122253
8016838
# @summary Retransform a big class.
# @author Daniel D. Daugherty
#
...
...
test/java/lang/instrument/RetransformBigClassApp.java
浏览文件 @
83857b56
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011,
2013
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
...
...
@@ -21,12 +21,21 @@
* questions.
*/
import
java.io.*
;
public
class
RetransformBigClassApp
{
/**
* Memory leak is assumed, if application consumes more than specified amount of memory during its execution.
* The number is given in Kb.
*/
private
static
final
long
MEM_LEAK_THRESHOLD
=
32
*
1024
;
// 32Mb
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
out
.
println
(
"Creating instance of "
+
RetransformBigClassAgent
.
clz
);
RetransformBigClassAgent
.
clz
.
newInstance
();
long
vMemBefore
=
getVMemSize
();
int
count
=
0
;
while
(!
RetransformBigClassAgent
.
doneRetransforming
)
{
System
.
out
.
println
(
"App loop count: "
+
++
count
);
...
...
@@ -37,6 +46,39 @@ public class RetransformBigClassApp {
}
System
.
out
.
println
(
"App looped "
+
count
+
" times."
);
long
vMemAfter
=
getVMemSize
();
if
(
vMemBefore
==
0
||
vMemAfter
==
0
)
{
System
.
err
.
println
(
"WARNING: Cannot perform memory leak detection on this OS"
);
}
else
{
long
vMemDelta
=
vMemAfter
-
vMemBefore
;
if
(
vMemDelta
>
MEM_LEAK_THRESHOLD
)
{
System
.
err
.
println
(
"FAIL: Virtual memory usage increased by "
+
vMemDelta
+
"Kb "
+
"(greater than "
+
MEM_LEAK_THRESHOLD
+
"Kb)"
);
System
.
exit
(
1
);
}
System
.
err
.
println
(
"PASS: Virtual memory usage increased by "
+
vMemDelta
+
"Kb "
+
"(not greater than "
+
MEM_LEAK_THRESHOLD
+
"Kb)"
);
}
System
.
exit
(
0
);
}
/**
* Return size of virtual memory allocated to the process in Kb.
* Linux specific. On other platforms and in case of any errors return 0.
*/
private
static
long
getVMemSize
()
{
// Refer to the Linux proc(5) man page for details about /proc/self/stat file
//
// In short, this file contains status information about the current process
// written in one line. The fields are separated with spaces.
// The 23rd field is defined as 'vsize %lu Virtual memory size in bytes'
try
(
FileReader
fileReader
=
new
FileReader
(
"/proc/self/stat"
);
BufferedReader
bufferedReader
=
new
BufferedReader
(
fileReader
))
{
String
line
=
bufferedReader
.
readLine
();
return
Long
.
parseLong
(
line
.
split
(
" "
)[
22
])
/
1024
;
}
catch
(
Exception
ex
)
{}
return
0
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录