- 47
- 0
最近学习JVM时,开启逃逸分析栈上分配对象优化,在实践中发现并没有任何效果!!
开启逃逸分析,JVM参数:
-server -verbose:gc -XX:+DoEscapeAnalysis
不开启就是去掉后面的-XX:+DoEscapeAnalysis参数
主要代码
package com.cjt;
public class Test {
private static class Foo {
private int x;
private static int counter;
public Foo() {
x = (++counter);
}
}
public static void main(String[] args) {
long start = System.nanoTime();
for (int i = 0; i < 1000 * 1000 * 10; ++i) {
Foo foo = new Foo();
}
long end = System.nanoTime();
System.out.println("Time cost is " + (end - start));
}
}
最终结果是,无论上述JVM参数如何设置,JVM gc不变,没有出现网上那种“栈上分配对象,堆上gc不会发生”现象。gc日志如下:
[GC 30464K->616K(116800K), 0.0014522 secs]
[GC 31080K->568K(116800K), 0.0010129 secs]
[GC 31032K->600K(116800K), 0.0008023 secs]
[GC 31064K->552K(147264K), 0.0014494 secs]
Time cost is 57097349
不知是哪里出现问题,我也设置过-Xmx调整堆大小,没有作用。不太清楚网络上的文章都经过实践没有!
望知情大佬解决,感谢!
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
﹏淺Sè时光つ 普通会员 1楼
JVM逃逸分析是一种工具,用于识别程序中的非法行为和未使用的变量。它可以在程序运行时进行分析,从而发现程序中的逃逸、未使用的变量和潜在的安全问题。
JVM逃逸分析主要通过以下几个步骤进行:
-
分析:程序的内存分配、栈跟踪和代码分析,确定程序中的变量和数据结构。
-
判断:检查程序中的变量是否被异常抛出,是否被无条件地访问,是否被非法修改,是否被尝试通过垃圾回收来清除。
-
分析:检查程序中的数据结构,确定是否可能产生未使用的变量,以及这些变量的生命周期。
-
判断:检查程序中的函数调用,确定是否可能产生未使用的函数,以及这些函数的生命周期。
-
发现:通过以上步骤,JVM可以发现程序中的逃逸、未使用的变量和潜在的安全问题。
JVM逃逸分析在软件安全开发中具有重要作用,它可以及时发现程序中的安全问题,帮助开发人员修复这些问题,从而提高软件的安全性。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

