问题标签 [openj9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - Spring Boot 2.3.4 + OpenJ9:未处理的异常
在过去的几天里,我们遭受了很多 JVM 崩溃。我们一直在使用 OpenJ9 (8 & 11) 没有任何问题,但是几天前我们开始出现很多崩溃。今天的两个例子:
或者这个更长的
JVM 详细信息
我们正在 Openshift 4 中部署我们的应用程序,这些崩溃已经出现在已更新到 Spring Boot 2.3.4 的应用程序中(我们不知道这是否是巧合)。
谢谢
java - 当类在类路径上时,Surefire 抛出 SurefireReflectionException
我正在尝试运行由 evosuite 生成的单元测试,但是 maven-surefire-plugin 抛出了一个 classnotfound 错误,而“缺失”类似乎在类路径中。
当我尝试运行测试时,调试日志显示在surefire 尝试运行测试时evosuite 位于类路径上;
但它失败了;
我仔细检查了 Killswitch 类是否在 evosuite jar 文件中,并且看起来确实如此。
为了完整起见,这里是mvn -version
;
我正在运行的完整命令(在遵循指南@ https://www.evosuite.org/documentation/tutorial-part-2/之后)是mvn clean compile test-compile evosuite:generate evosuite:export evosuite:prepare test
使用 evosuite 参数 memoryInMB = 4000 和 cores = 4。
java - 在 Little Endian CPU 架构上运行时,Java 如何处理 Endianess?
Java 是 Big Endian,它如何在保持性能的同时处理 Little Endian CPU?JVM(OpenJDK、OpenJ9 等)是否进行任何特殊优化以保持性能,例如在 Little Endian 平台的特殊情况下仅选择性地成为 Big Endian?访问 ByteBuffers 或调用本机代码或写入 IO 或访问 volatile 变量时是否有特殊的字节序处理?Java 如何改变 Little Endian 架构中的字节序?字节序在什么点或操作(加载、存储、计算、寄存器、缓存、内存等)发生变化?这会有什么样的性能损失?
java - Eclipse OpenJ9、-XX:+CompactStrings 和路径名称中的商标符号
我刚刚注意到 Eclipse OpenJ9 和-XX:+CompactStrings
VM 标志的一个奇怪问题。我想知道这是一个错误还是只是我对某事的误解......?
这是发生的事情:
收到来自 的路径后DirectoryStream
,如果路径中有商标符号(™),该符号将转换为另一个字符,引号(“)。
仅当启用紧凑字符串时才会发生这种情况。
我在 Windows 10 上使用最新的 Eclipse OpenJ9 (v0.23.0)。
HotSpot 显然默认启用了 Compact Strings,但它没有同样的问题。
这是应该演示该问题的示例代码:
crash - Q) 由于 CRYPTO_memcmp 中的内存冲突导致 openJ9 libcryp 崩溃
我的问题的背景
我的服务器软件基于
openjdk 版本“1.8.0_242”
几乎每 2-3 周我的服务器进程都会崩溃。在 Java 的 Dmp 文件中看到,当做
libcrypt-1_1 DLL 中存在内存冲突
所以对我来说,它看起来像 CRYPTO_memcmp 力量
1XHEXCPCODE Windows_ExceptionCode: C0000005
我的问题
有没有人观察到类似的 openJ9 崩溃或对根本原因有所了解?
非常感谢莱因霍尔德
java - jps 未列出 tomcat 进程和 jmap 无法创建堆转储
我有运行tomcat(9.0.39.0)服务器,由用户cpappt启动并使用pid:1682650运行。该服务器运行的机器不是裸机,而是一VMware
台机器,JVM
来自OpenJ9
我想提取一个heap dump
tomcat 来分析潜在的内存泄漏。
我尝试使用jps
获取pid
tomcat 服务器的,不幸的是我只看到了pid
它jps
本身。
并且我也以jps
启动 tomcat 服务器的同一用户身份运行该命令
我也试过运行jps
命令,java.io.tmpdir
在tomcat的启动脚本中添加指定的,结果和之前一样(注:tmpdir
本身为空)。
(补充说明:如果我启动了一个小的“Foo 程序”,jps
就是向我展示了pid
这个程序。)
然后我尝试使用失败的命令创建堆转储:pid
ps
如果我只是尝试查看直方图,这也会失败:
也jcmd
无法创建转储:
我不知何故怀疑这两个问题 (jps
和jmap
) 是相关的......所以,如果有人知道可能是什么问题,甚至我可以如何创建堆转储,那就太好了。
来自 tomcat 服务器(和 java)的附加信息:
更新:2021-01-09
我终于可以找到知道 jmx 用户密码的同事,所以使用jconsole
我能够触发 a heap dump
,但我只能调用triggerClassicHeapDump()
. 我将文件复制到我的本地机器并想用Eclipse MemoryAnalyzer
(我还添加了Diagnostic Tool Framework for Java (DTFJ)
)来分析它。
但是当我尝试打开文件时,我现在收到一条错误消息......
java - InputStream 关闭(通过 OpenJ9_11.0.8.10 debian x64 的 fatjar/überjar)
我在我的环境中面临着一种奇怪的行为。
我有一个我的 spring 应用程序的 fatjar,我在一个基于adoptopenjdk/openjdk11-openj9:jdk-11.0.8_10_openj9-0.21.0-debian-slim
和使用垃圾收集器的 docker 容器中运行它G1GC
。
Java 选项是:-Xmx128m -XX:+UseG1GC -Xss256K
fatjar 是由描述符生成maven-assembly-plugin
的。jar-with-dependencies
我的应用程序使用aws-java-sdk-core:1.11.955
谁依赖于jackson-core:2.6.7
.
我的应用程序运行正常,但随机开始抛出NoClassDefFoundError
. 阻止这种情况继续发生的唯一方法是重新启动我的容器/应用程序。
当com.amazonaws.internal.config.InternalConfig.Factory
静态块运行并从类路径 ( ) 加载 json 资源文件/com/amazonaws/internal/config/awssdk_config_default.json
并且它存在时,会发生此错误。
这是堆栈跟踪:
调试JsonFactory
and后ByteSourceJsonBootstrapper
,没有调用“InputStream.close()”的代码。
所以我开始认为这可能是一个 JVM (OpenJ9) 错误......或者关于垃圾收集器 (G1GC) 的一些奇怪行为。
另一个奇怪的想法是,当我在本地环境中运行同一个 jar 时,我无法获取此FilterInputStream
实例,而.InflaterInputStream
sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream
Ps.:没有 ClassLoader 检测/操作。
有人可以给我一盏灯吗?
android - JIT优化后如何查看Android代码?
我希望你一切都好。
在编程时,我开始怀疑我的懒惰(但漂亮)的代码最终是否会得到优化,而我不需要关心优化与否。所以我进行了一些搜索,发现 HotSpot 或 OpenJ9 是我可以用来将 Java 代码编译成程序集并对其进行优化的工具。
所以我想,如果我把我的 example.kt 代码变成 example.class 并在这个 example.class 上运行 HotSpot 或 J9,我可以查看优化的代码。
我在下面尝试过,但它只产生了一个错误代码。
如果有人以前尝试过,你能帮我找到一种方法来获得优化的 android 代码吗?非常感谢。
java - invokevirtual 是否会破坏 Java 上的标量替换?
我希望重构我的应用程序以允许转义分析和标量替换为一个特定的对象启动,该对象经常被分配。
我假设我不会在 JVM 中达到任何内联限制,因为我可以在需要时进行调整(完全内联是 Scalar Replacement 工作的需要之一)
假设一个基本的代码流程是这样的:
使用对象调用虚拟方法是否足以破坏最新 OpenJDK 或 OpenJ9 的标量替换?如果是这样,可以使用哪种解决方案最接近当前的 OOP 方法,同时避免调用虚拟?
也许 invokevirtual 可以通过 JIT 进行优化,并且足以确保这 4 个处理程序类中没有一个“泄漏”对 HeavyObjectIWantToScalarReplace 的引用?
java - OpenJDK 11 禁用颜色引擎
我想知道是否可以禁用在 OpenJDK 中加载颜色引擎。OpenJDK 版本详情:
这个选项有效吗?
我怀疑该选项是否有效,因为 OpenJDK 甚至不再包含 KCMS。
我问的原因是因为我的 Java 应用程序使用 LitteCMS 1.19 版,我们目前有点卡在那个版本上。而且我不想加载可能导致冲突或崩溃的不同版本的 LCMS 库。