Tag: jvm

ASM中的Java方法参数值

我试图获取Java程序的方法参数的值。 我正在使用ASM来检测字节码并获取这些值。 但是,我遇到了一些麻烦。 这是用于检测代码的visitCode()方法。 它正在做的是: 创建一个空数组以存储收集的参数。 对于每个参数,将其值加载到数组中。 将此数组发送到我的代理的OnMethodEntry方法(将使用值)。 。 @Override public void visitCode() { int paramLength = paramTypes.length; // Create array with length equal to number of parameters mv.visitIntInsn(Opcodes.BIPUSH, paramLength); mv.visitTypeInsn(Opcodes.ANEWARRAY, “java/lang/Object”); mv.visitVarInsn(Opcodes.ASTORE, paramLength); // Fill the created array with method parameters int i = 0; for (Type tp : paramTypes) { mv.visitVarInsn(Opcodes.ALOAD, paramLength); mv.visitIntInsn(Opcodes.BIPUSH, […]

使Java程序成为独立的exe(无JVM运行)

有没有办法让Java程序成为独立的exe(没有JVM运行)?

Eclipse中Xmx和Xms的最大值?

现在我在ini文件中的这些设置是: -Xms768M -Xmx1024M 当设置它们更高时,eclipse不再启动了……有没有办法在没有eclipse崩溃的情况下增加这些值?

java中varargs的最大参数个数是多少?

java中的vararg可以使用的参数个数的最大值是多少? 我相信应该有一些限制而且它不是无限的。

为什么JSR / RET不推荐使用Java字节码?

有谁知道为什么在Java 6中不推荐使用JSR / RET字节码对? 我在网上发现的唯一有意义的解释是,他们通过运行时进行代码分析更难以执行。 有谁知道另一个原因?

JVM -XX:+ StringCache参数?

我最近在阅读JRE 6 [ Java VM Options ]中可用的所有JVM参数,并看到了这一点: -XX:+ StringCache:启用常用分配字符串的缓存。 现在我总是认为Java保留了一个实习池(正确的单词?)字符串,并且当使用字符串连接时,它不是创建新对象,而是从这个池中拉出它们。 有没有人曾经使用过这个论点,或者可以解释为什么需要它? 编辑:我试图运行一个基准测试,看看这个参数是否有任何影响,并且无法让Sun JVM识别它。 这与: java version “1.6.0_11” Java(TM) SE Runtime Environment (build 1.6.0_11-b03) Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing) 所以我不确定这个论点是否有效。

-d64交换机对Sun JVM驻留内存使用有什么影响?

我有这个需要内存调整的webapp。 虽然我已经在分析应用程序本身并削减了一些东西,但JVM本身在我们最繁忙的实例上看起来过于臃肿。 (较低的卷实例没有此问题。)详细信息: 平台: RHEL4 64位( Linux 2.6.9-78.0.5.ELsmp #1 SMP x86_64 ) Sun Java 6( Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode) ) 在startup.sh使用-d64 Tomcat 6 我的webapp目前有一些代码,在生产中需要运行64位的好处。 我观察到,经过一段时间(一周)后,JVM驻留内存大小(如上图所示)是我的-Xmx设置大小的三倍 。 非堆内存大小等都是相对微不足道的,只是堆大小的单位数百分比 只有一段代码需要64位的地址空间 如果我可以重构64位JVM的需要,并删除-d64开关,那会不会使JVM的常驻内存占用更小? 换一种说法… -d64交换机对Sun JVM驻留内存使用有何影响(如果有)?

当JVM在运行时耗尽内存以进行分配时会发生什么?

在思考了一个通用的方法来提出这个问题(并且没有找到一个)后,我只想问它作为一个具体的例子: 假设我有一台具有1 Gb内存的Linux机器,它可以分配给进程(物理和交换总数为1 Gb)。 我在计算机上安装了标准的Oracle Hotspot JVM版本7。 如果在给定时刻,有足够的程序运行,只有400 Mb的1 Gb是空闲的,我在那一刻用以下JVM标志启动Java程序: java -Xms256m -Xmx512m -jar myJar.jar 发生了什么? : A. JVM是否无法立即启动,因为它会尝试分配所有512 Mb内存并失败(由于目前没有足够的可用内存)? 如果JVM启动: 如果在某些时候,正在运行的Java进程需要超过400 Mb的内存(并且除了当前的Java进程已经使用的内存之外,仍然只有400 Mb的内存空闲),会发生什么: B. Java进程是否会因OutOfMemroyError而失败? C.它会因一些其他(标准)错误而失败吗? D.是不确定的行为?

如何在JVM中validation字节码?

如何在JVM中validation字节码?

反汇编Java JIT编译的本机字节码

有没有办法对Java即时编译器生成的本机代码进行汇编转储? 还有一个相关的问题:有没有办法在不运行JVM的情况下使用JIT编译器将我的代码编译成本机代码?