Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2301_76393173
jadx
提交
ffedaea5
J
jadx
项目概览
2301_76393173
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ffedaea5
编写于
1月 21, 2019
作者:
J
Jan S
提交者:
skylot
1月 21, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(gui): limit the spare memory to max. 512MiB (#434)
上级
aec98644
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
3 deletion
+24
-3
jadx-gui/src/main/java/jadx/gui/ui/HeapUsageBar.java
jadx-gui/src/main/java/jadx/gui/ui/HeapUsageBar.java
+2
-1
jadx-gui/src/main/java/jadx/gui/utils/Utils.java
jadx-gui/src/main/java/jadx/gui/utils/Utils.java
+22
-2
未找到文件。
jadx-gui/src/main/java/jadx/gui/ui/HeapUsageBar.java
浏览文件 @
ffedaea5
package
jadx.gui.ui
;
import
jadx.gui.utils.NLS
;
import
jadx.gui.utils.Utils
;
import
javax.swing.*
;
import
java.awt.*
;
...
...
@@ -44,7 +45,7 @@ public class HeapUsageBar extends JProgressBar implements ActionListener {
setValue
(
usedKB
);
setString
(
String
.
format
(
textFormat
,
(
usedKB
/
TWO_TO_20
),
maxGB
));
if
(
used
>
r
.
maxMemory
()
*
0.8
)
{
if
(
(
used
+
Utils
.
MIN_FREE_MEMORY
)
>
r
.
maxMemory
()
)
{
setForeground
(
RED
);
}
else
{
setForeground
(
GREEN
);
...
...
jadx-gui/src/main/java/jadx/gui/utils/Utils.java
浏览文件 @
ffedaea5
...
...
@@ -26,6 +26,16 @@ public class Utils {
public
static
final
Font
FONT_HACK
=
openFontTTF
(
"Hack-Regular"
);
/**
* The minimum about of memory in bytes we are trying to keep free, otherwise the application may run out of heap
* which ends up in a Java garbage collector running "amok" (CPU utilization 100% for each core and the UI is
* not responsive).
*
* We can calculate and store this value here as the maximum heap is fixed for each JVM instance
* and can't be changed at runtime.
*/
public
static
final
long
MIN_FREE_MEMORY
=
calculateMinFreeMemory
();
private
Utils
()
{
}
...
...
@@ -107,11 +117,21 @@ public class Utils {
return
overIcon
;
}
/**
* @return 20% of the maximum heap size limited to 512 MB (bytes)
*/
public
static
long
calculateMinFreeMemory
()
{
Runtime
runtime
=
Runtime
.
getRuntime
();
long
minFree
=
(
long
)
(
runtime
.
maxMemory
()
*
0.2
);
minFree
=
Math
.
min
(
minFree
,
512
*
1048576
);
return
minFree
;
}
public
static
boolean
isFreeMemoryAvailable
()
{
Runtime
runtime
=
Runtime
.
getRuntime
();
long
maxMemory
=
runtime
.
maxMemory
();
long
totalFree
=
runtime
.
freeMemory
()
+
maxMemory
-
runtime
.
totalMemory
(
);
return
totalFree
>
maxMemory
*
0.2
;
long
totalFree
=
runtime
.
freeMemory
()
+
(
maxMemory
-
runtime
.
totalMemory
()
);
return
totalFree
>
MIN_FREE_MEMORY
;
}
public
static
String
memoryInfo
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录