问题标签 [ibm-jvm]

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.

0 投票
7 回答
73979 浏览

java - 使用 SSL 访问 Web 服务时出错

我有一个程序应该将文件发送到需要 SSL 连接的 Web 服务。我运行程序如下:

这很好用,但是当我将第一行更改为

我收到以下错误:

所以看起来这个问题与我正在使用的 JRE 有关,但似乎没有意义的是非 IBM JRE 工作正常,但 IBM JRE 没有。有什么想法或建议吗?

0 投票
5 回答
4110 浏览

java - 为什么这段代码编译,但运行时 ClassNotFoundException?

我有一些使用专有 sun.*.OperatingSystemMXBean 的代码,所以我很小心。

但是,当此代码在 IBM JVM 上ClassCastException运行时,我得到的是 runtime而不是ClassNotFoundException. 如果该类不可用,为什么这段代码能够编译得很好,JVM如何影响这样的事情?

0 投票
1 回答
139 浏览

java - IBM J9 规范将不允许从非引导类访问文件创建

我正在将 J9 规范 (wm50-arm-midp20_6.1.2.2) 用于在 windows mobile 上运行的 java 应用程序,并且遇到了需要创建文件的障碍。

我从 com.ibm.oti.connection.file.FileOutputStream 的 J9 构造函数中的这一行得到一个安全异常

现在,大多数其他输出流类型都有一个支持 connection.java 类,通过该类发送调用,但没有一个支持文件流实现。

为了解决这个问题,我预计需要编写自己的 DLL 文件并从 java 代码中调用它,但我想知道是否有人遇到过这个问题并且能够解决它而无需调用本机 dll。

提前致谢!JR

0 投票
1 回答
941 浏览

java - Lock Free 解决方案,同时从地图中增加计数器然后读取它

我正在尝试衡量客户端代码的性能。意味着需要多少时间end to end client side code以及客户端代码中的其他类很少。所以我做了我的基准测试。

下面是我目前正在使用的简单程序。但这有一个问题。

下面是实现的类Runnable interface

问题陈述:-

IBM JVM在我的机器上运行。因为我在一家他们使用的公司工作IBM JVMSUN JVM所以我无法更改 JVM 部分。

所以在 IBM JVMincrementAndGet()方法看起来,首先对我来说很奇怪

所以它是一个阻塞调用,这synchronized意味着每个线程将相互等待。现在我正在寻找Lock free solution这个来衡量每种方法的性能。

我知道,这里会有很小的延迟。但是无论我想在客户端代码中测量什么方法的性能,我通常都会将下面的行放在该方法的正上方

long start = System.nanoTime();

这两行采用相同的方法但不同ConcurrentHashMap

因此,如果我5-8 different methods在客户端代码的不同类中有相同的上述代码。然后端到端性能测量将是错误的,因为每个线程都将在那里等待增加值。这就是我为此寻找无锁解决方案的原因。

有什么简单的方法可以做到这一点吗?任何人都可以为此提供任何例子吗?

提前致谢。

更新代码:-

此代码是否也是线程安全代码?因为它也将被多个线程访问。

0 投票
1 回答
802 浏览

java - TrustManagerFactory IBM Java 1.7

在我的 Java 应用程序中,我在客户端使用了 Java 的密钥库工具。我支持 Oracle 和 IBM Java 环境。基本上代码如下所示:

尝试 {

该程序在 IBM JRE 1.6 及更早版本中运行良好。在 1.7 版本中,如果尝试连接到服务器并最终失败,则会收到以下异常:

线程“myThread”中的异常 java.lang.NoClassDefFoundError: sun/security/validator/KeyStores 09:06:46>> at sun.security.ssl.X509TrustManagerImpl.(X509TrustManagerImpl.java:80) 09:06:46>> at sun.security.ssl.TrustManagerFactoryImpl$SimpleFactory.getInstance(TrustManagerFactoryImpl.java:240) 09:06:46>> 在 sun.security.ssl.TrustManagerFactoryImpl.engineInit(TrustManagerFactoryImpl.java:79) 09:06:46>> 在javax.net.ssl.TrustManagerFactory.init(TrustManagerFactory.java:19) 09:06:46>> 在 MyTrustMgr.getTrustManager(MyTrustMgr.java:34)

你知道这个问题可能是什么原因吗?

0 投票
1 回答
2807 浏览

java - IBM JVM 1.6 SR14:java.lang.UnsatisfiedLinkError:fontmanager(在 com.ibm.oti.vm.bootstrap.library.path 中找不到)

我们将 AIX 机器上的 IBM Java 从 Java 1.6 SR 9 升级到 Java 1.6 SR14,现在我们在应用程序启动期间出现以下错误:

以下代码允许重现此问题:

如果在没有任何 jvm 参数的情况下运行 Rtf 类,则没有任何例外:

但是,如果使用“-Dcom.sun.management.jmxremote” jvm 参数运行 Rtf 类,则会出现异常“线程“main”中的异常 java.lang.UnsatisfiedLinkError: fontmanager (Not found in com.ibm.oti.vm. bootstrap.library.path)"

有谁知道如何解决这个问题?

0 投票
4 回答
2102 浏览

java - 如何检测String.substring是否复制了字符数据

我知道对于 Oracle Java 1.7 update 6 及更高版本,使用 时String.substring,会复制 String 的内部字符数组,而对于旧版本,它是共享的。但我没有找到可以告诉我当前行为的官方 API。

用例

我的用例是:在解析器中,我喜欢检测是否String.substring复制或共享底层字符数组。问题是,如果字符数组是共享的,那么我的解析器需要显式地“取消共享”使用new String(s)以避免内存问题。但是,如果String.substring无论如何都复制数据,那么这不是必需的,并且可以避免在解析器中显式复制数据。用例:

我需要的

基本上,我想要一个静态方法boolean isSubstringCopyingForSure()来检测是否new String(..)不需要。如果存在SecurityManager. new String(..)基本上,检测应该是保守的(为了避免内存问题,即使没有必要我也宁愿使用)。

选项

我有几个选项,但我不确定它们是否可靠,特别是对于非 Oracle JVM:

检查 String.offset 字段

检查 JVM 版本

检查行为 有两个选项,都相当复杂。一种是使用自定义字符集创建一个字符串,然后使用子字符串创建一个新字符串 b,然后修改原始字符串并检查 b 是否也更改。第二个选项是创建巨大的字符串,然后是一些子字符串,并检查内存使用情况。

0 投票
0 回答
2965 浏览

java - JIT 编译失败 (IBM JVM)

我在 WebSphere 7.0 上运行我的 Web 应用程序。它工作了一段时间,但 JVM 崩溃并生成核心转储。从 javacore*** 文件:

在 Arrays.sort() 方法的 JIT 编译期间,JVM 似乎崩溃了。我不知道,为什么会发生。我尝试了 -Xjit:exclude{...} 并解决了问题,但在这种情况下我对性能不满意..

我将 Arrays.sort() 归咎于 IBM 的 JVM 并以与 Oracle 的 JVM(复制粘贴代码)中实现的方式完全相同的方式实现了我自己的排序,并暂时忘记了这个问题。但是昨天 JVM 在同一任务中再次崩溃。新的 javacore 文件的唯一区别是

其中 SortUtils.sort 是我的新实现。

请解释一下,是 JIT 编译器的错误还是我做错了什么?有什么建议可以解决吗?会不会是硬件相关的问题?

0 投票
1 回答
514 浏览

java - StringBuffer char[] 在 heapdump 中似乎超出范围

在 OutOfMemoryError 之后,我通过 IBM Support Assistant 的 64 位内存分析器(在 Websphere 7.0.23 上运行的 J9 VM)处理了生成的堆转储

列出了几个泄漏候选者(所有与系统类加载器相关),但其中一个似乎表明在 StringBuffer 中初始化为 256 的 char[] 实际上包含 7700 万个空字符。

Support Assistant 生成的堆转储分析显示 char[77418987] @ 0xc32* * * \u0000\u0000\u0000.......

这是由 StringBuffer -> PatternLayout -> TimeAndSizeRollingAppender 引用的

保留的堆签出,每个字符 2 个字节,数组本身 18 个字节,总共 150+ Mbs。

Log4j 版本是 1.2.16,我们使用 simonsite TimeAndSizeRollingAppender(虽然我想删除这个依赖)。

这可能是支持助手的误报,还是有某种方式可以使 char[256] 在堆上变成 char[77000000+]?

0 投票
1 回答
411 浏览

java - 使用 Java JVM -xdump 参数打印 http 线数据

我正在使用IBM JRE,并且我有一个Java SDK由 2 个客户端使用:一个 Java 客户端,以及一个 .NET 客户端。

在 Java 客户端上,我使用以下设置来捕获 http 数据:

在 .NET 客户端中,我可以将参数传递给 JVM。我可以使用哪些参数来实现与System.setPropertyJava 客户端中的设置相同的行为?

我对转储代理等进行了一些研究,但似乎找不到合适的东西。 http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.60%2Fdiag%2Ftools%2Fdump_agents.html