jvm相关内容
我不断听到有关添加到 JVM 的所有新酷特性,其中一个很酷的特性是 invokedynamic.我想知道它是什么以及它如何使 Java 中的反射式编程更容易或更好? 解决方案 这是一个新的 JVM 指令,它允许编译器生成调用具有比以前更宽松的规范的方法的代码——如果你知道“这里是一篇非常精彩的博文,提供了很多细节.p>
..
我的服务器中有 2 个 tomcat 正在运行 一个是tomcat 7,一个是tomcat 8,第一个的配置文件server.xml是: ... 在第二个tomcat中有:
..
我想查看它正在执行的 JVM 的当前(字节码)指令流.经过一番谷歌搜索,我发现 jvm 调试版本提供了 -XX:+TraceBytecodes 选项(参见 这里).但是,提到的热点 JVM 调试构建链接已失效,我无法在线找到调试构建:/ 是否有另一种方法可以跟踪 jvm 字节码流,或者有人可以指出我正确的方向吗?我正在运行 64 位 ubuntu 16.04. P.S:我知道,打印出完
..
对于一个类项目,我想实现一个 Java 应用程序,它连接到本地 JVM 并收集诸如堆使用情况、线程数、加载的类等统计信息.我在网上搜索了一个 API,第三方内置的,可以让我这样做,但到目前为止我还没有成功. 有谁知道可以让我连接到正在运行的 JVM 并收集统计数据的 API? 解决方案 以下类演示了如何连接到正在运行的 JVM 并建立 JMX 连接,并在必要时加载 JMX 代理.它将
..
我正在寻找一种方法,通过使用 Java 代理或检测类(最好是比用户类更低级别的东西)来拦截 JVM 中的所有对象创建(new 或任何其他创建对象的方法),有一个 类似问题 不关注 Java代理或低于检测用户类的东西 解决方案 Java 对象可以通过多种不同的方式创建. 从 Java 代码,当解释或编译的 Java 方法执行以下字节码指令之一时:新, newarray, anewarr
..
众所周知,String 在 java 中是不可变的.但是,可以通过获取字段并设置访问级别来使用反射来更改它.(我知道这是不明智的,我不打算这样做,这个问题是纯理论的). 我的问题:假设我知道自己在做什么(并根据需要修改所有字段),程序会正常运行吗?或者 jvm 是否进行了一些依赖于 String 不可变的优化?我会遭受性能损失吗?如果是这样,它做了什么假设?程序会出什么问题 附言Str
..
我正在尝试在 java 中使用 lambda 表达式创建一个示例,并且我使用的是官方 JDK8.我的示例运行成功.但是当我试图检查编译器如何将 lambda 表达式转换为字节码时,这让我有些困惑.以下是我的示例代码:- 公共类 LambdaTest {公共整数 lambdaBinaryOperator(BinaryOperator binaryOperator) {返回 binaryOperat
..
Windows Mobile 上可用的 JVM 实现有哪些? Esmertec JBed 是我 WinMo 手机上的那个. 想知道这个区域中有多少其他 JVM 供应商.是否有可用的比较或基准数据? 解决方案 一般 Windows CE 的 JVM 选择(包括 Pocket PC 和 Windows Mobile): CrE-ME Mysaifu Skelmir CEE
..
所以我知道 HotSpot VM 现在默认启用压缩 oops.从 Java SE 6u23 开始,它通过 VM 选项 -XX:+UseCompressedOops 对此提供了支持.我知道它允许有效地利用 CPU 缓存,因为 CPU 缓存可以容纳更多的引用,而不是它们必须处理 64 位大小的引用.但我不明白的是,仅使用 32 位 JVM 可以寻址多达 264 个地址. 为了简化问题,我们如何仅
..
Tomcat 在 Windows 下运行 webapp.几天后(在非常低的负载下),标题中提到的异常开始出现在日志中,从此无法建立新的连接,唯一的解决方法是重新启动服务器. 环境: 最新的 Tomcat 6 Windows Server 2008 R2 JDK 6 更新 30 SQL Server 2008 Kerberos 身份验证 目前收集的证据: netsta
..
我从一些文档中了解到,Hotspot VM 利用称为 Oop Maps 的数据结构来管理 VM 中的所有 OOP.我的问题是,这个 Oop Map 数据结构是什么时候生成的?在编译时还是运行时?任何有关此的详细文件都将受到欢迎.谢谢各位. 解决方案 OopMap 是一种记录对象引用 (OOP) 在 Java 堆栈上的位置的结构.它的主要目的是在 Java 堆栈上查找 GC 根,并在对象在堆
..
我们将 Java 6 JRE 与我们的应用程序安装程序捆绑在一起,以便它可以在任何机器上运行,但这会使应用程序更重一些.所以我们计划减小 JRE 的大小.如果有人做过此类任务,您能否提供指导以推进此任务? 解决方案 查看JRE目录下的README文件.如果您将 Oracle/Sun JRE 与应用程序打包在一起,则“可选文件和目录"部分列出了可以从 Oracle/Sun JRE 中删除的一
..
我刚刚尝试使用 Java 9 运行我的服务器并收到下一个警告: 警告:发生了非法反射访问操作警告:io.netty.util.internal.ReflectionUtil(文件:/home/azureuser/server-0.28.0-SNAPSHOT.jar)对构造函数 java.nio.DirectByteBuffer(long,int) 的非法反射访问警告:请考虑将此报告给 io.ne
..
我知道你可以在 Dalvik 的 VM 中运行几乎所有的 Java,而你可以在 Java 的 VM 中运行,但是限制不是很清楚.有没有人遇到任何主要的绊脚石?有什么大图书馆有问题吗?任何编译成 Java 字节码的语言(Scala、Jython 等)都不能按预期工作? 解决方案 Dalvik 不会处理或不会以与标准 Java 字节码完全相同的方式处理许多事情,尽管其中大多数都非常先进.
..
我试图找出 Apache Tomcat 变量之间的区别 - SO 惊讶地发现这里还没有发布任何问题/答案.所以我想在发现差异后在这里分享它(有答案).检查下面的答案/差异. 注意:在发布本文时,我们在 CentOS5 64 位架构上运行 Apache Tomcat v6.0.10 和 JDK 6u32. 解决方案 有两个环境变量 - CATALINA_OPTS 和 JAVA_OPTS
..
我有一个关于 JVM 的非常基本的问题:它是编译器还是解释器? 如果是解释器,那么JVM内部存在的JIT编译器呢? 如果两者都不是,那么 JVM 到底是什么?(我不想要将字节码转换为机器特定代码等的JVM的基本定义.) 解决方案 首先,让我们对以下术语有一个清晰的认识 Javac 是 Java Compiler -- 将你的 Java 代码编译成 Bytecode JV
..
我写这篇文章是为了深入理解Java中的volatile 公共类 Main {私人int x;私人易失性int g;公共无效actor1(){x = 1;g = 1;}公共无效actor2(){put_on_screen_without_sync(g);put_on_screen_without_sync(x);}} 现在,我正在分析 JIT 为上述代码生成的内容.根据我们在上一篇文章中的讨论,
..
有没有办法以编程方式设置最大 java 堆大小而不是作为 vm 参数? 类似: System.getProperties().put("", "1000m"); 解决方案 不适用于任何 Hotspot JVM.JVM 堆参数只能在命令行中指定,然后在 JVM 的生命周期内固定. 使用 Hotspot Java 实现,“更改"应用程序的堆大小的唯一方法是在具有不同命令行参数的新 J
..
我在 linux 机器上的 tomcat8 中部署的 java web 应用程序一直在泄漏本机内存,我尝试通过使用 jemalloc 分析来检测泄漏源,如下所述:https://github.com/jeffgriffith/native-jvm-leaks在服务器上运行超过 24 小时的带有堆转储的分析工具的输出: 总计:794708494 B789734456 99.4% 99.4% 78
..
我正在尝试运行 java 程序,但出现以下运行时错误.错误如下所示. 线程“main"中的异常 java.lang.NoSuchFieldError: DEF_CONTENT_CHARSET在 org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(DefaultHttpClient.java:175)在 org.ap
..