Tag: jvm

无法在32位JVM上加载64位SWT库(替换SWT文件)

我正在尝试调试此问题,但不确定我需要在哪里替换 Eclipse的SWT jar文件。 当前系统配置: Eclipse Helios 3.6 – 32 Bit JDK 1.6 JVM – 32 Bit Windows 7 – 64 Bit 错误信息: java.lang.UnsatisfiedLinkError: Cannot load 64-bit SWT libraries on 32-bit JVM at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194) at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174) at org.eclipse.swt.internal.C.(C.java:21) at org.eclipse.swt.widgets.Display.(Display.java:138) at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:687) at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161) at de.vogella.rcp.intro.first.Application.start(Application.java:18) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) […]

为什么每个应用程序有一个JVM?

我读到每个应用程序都在自己的JVM中运行。 为什么会这样? 为什么他们不让一个JVM运行2个或更多应用程序? 我读了一篇SOpost,但无法在那里得到答案。 每个Java应用程序有一个JVM吗? 我在谈论通过public static void main(String [])方法启动的应用程序…)

跨JVM或Application实例或Tomcat实例的单例

如果我在Tomcat(或任何其他服务器)的单个实例上部署并运行相同应用程序的2个实例。 然后将创建一个单独的对象(Singleton类): 跨越Tomcat的单个实例(但对于同一应用程序的2个实例是常见的)或 跨应用程序实例(2个应用程序实例不同) 所以基本上我想要理解的是,每个JVM都会创建一个Singleton类的单个对象吗? 如果应用程序托管在Web服务器(或容器)上,这是如何工作的。

Java VM:1.6.0_17和1.6.0_18都可以重现SIGSEGV,如何报告?

编辑 :这个可重现的SIGSEGV发生在具有多个proc和超过2GB内存的Linux机器上,因此Java默认为-server模式。 有趣的是,如果我强迫“-client”再也没有崩溃……(我仍然不太确定如何处理我可重复的SIGSEGV,但它仍然很有趣)。 首先请注意,这与以下内容有点相关但不同,因为在我们的情况下,它只发生了一个SIGSEGV,我们可以可靠地触发它: JVM OutOfMemory错误“死亡螺旋”(不是内存泄漏) 它是相关的,因为它发生在我们为应用程序提供“大量数据”时:数据来自文本文件然后数字嘎吱嘎吱(是的,Java中的财务数字运算)。 我只能使用有效的Java代码可靠地触发JVM到SIGSEGV。 注意 :我总是会崩溃JVM 1.6.0_17和JVM 1.6.0_18这个问题并不是关于如何解决这个问题(例如,使用VM参数可以解决问题,但我不是在那之后,我想知道如何处理这种始终可重复的SIGSEGV)。 我有一个解决方法,只是在启动我们的应用程序时使用Java 1.5(同时仍然使用Java 1.6在同一台机器上运行IntelliJ IDEA等),但我的问题是,是否应该报告这个和如果它应该,如何报告它知道日志本身包含专有信息(完整的hs_err _…_日志)。 可以排除硬件错误: 这种情况发生在经常达到几个月正常运行时间的工作站上(我只在重要的安全补丁影响我已经发布的严格和强化的Debian Linux时重新启动它,这实际上并不经常发生)以及哪些应用程序永远不会崩溃(使它非常不太可能是那台机器上的硬件问题[更多下面]) 相同的应用程序在相同负载下的JVM 1.5下在同一台机器上完美运行(这就是我测试应用程序的方式:我只需在1.5 VM下启动它) 相同的应用程序在相同(巨大)负载下的超过一百台客户端机器上运行完美(在Windows + JVM 1.5或1.6上从未崩溃一次,并且从未在OS X + JVM 1.5或1.6上崩溃一次[崩溃意味着即时电话来自客户的电话]) 同一台机器上的其他应用程序和相同的1.6.0_17或1.6.0_18 JVM永远不会崩溃(例如,我有两个IntelliJ IDEA实例作为同一台机器上的两个不同用户运行而且它们不会崩溃) 机器用memtest“定期”测试(在安装新的操作系统之前,最后一次发生在安装Debian Lenny时,不久前) 这是可重复的按需SIGSEGV: … $uname -a Linux saturn 2.6.26-2-686 #1 SMP Wed Nov 4 20:45:37 UTC 2009 i686 GNU/Linux … $ […]

JVM向OS发回内存

我有一个关于JVM内存管理的问题(至少对于SUN的内存管理问题)。 我想知道如何控制JVM将未使用的内存发送回OS(在我的情况下为Windows)这一事实。 我写了一个简单的java程序来说明我的期望。 使用-Dcom.sun.management.jmxremote选项运行它,以便您也可以使用jconsole监视堆。 使用以下程序: package fr.brouillard.jvm; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.List; public class MemoryFree { private BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); private List usedMemory = new LinkedList(); private int totalMB = 0; private int gcTimes = 0; public void allocate(int howManyMB) { usedMemory.add(new byte[howManyMB * 1024 * 1024]); […]

Java内存解释(SUN JVM)

我试图找到sun java vm的内存段的解释,这也是管理员可以理解的 。 它应该解释堆/非堆内存是什么以及不同内存池的重要性。 如果它以某种方式与jconsole视图相关,那将是一个奖励。 有网站有这样的解释吗?

分析gc日志

我正在使用-XX:+PrintGCApplicationStoppedTime和-XX:+PrintGCApplicationConcurrentTime选项来打开gc日志记录。 但是发现只有在4 0r 5 PrintGCApplicationStoppedTime打印后PrintGCApplicationStoppedTime通过-XX:+PrintGCDetails命令打印gc日志的实际细节! 根据定义, PrintGCApplicationStoppedTime为每个gc打印应用程序停止时间。 但我不清楚为什么它打印如下所示的例子。 是因为 PrintGCApplicationStoppedTime只需在每个安全点到达后打印 (要么) 日志文件将由不同的gc线程记录。 我使用Concurrent扫描完整的GC和年轻一代的ParNew 我的应用是web应用程序。 O / p模式 – 我是这样的: Application time: 0.3847031 seconds Total time for which application threads were stopped: 0.3135419 seconds Application time: 0.1520723 seconds Total time for which application threads were stopped: 0.1993920 seconds Application time: 0.1188219 seconds Total time for which […]

JVM HotSpot上的Java Exceptions计数器

我想知道是否可以在不更改应用程序代码的情况下记录JVM级别发生的每个exception? 每个例外,我的意思是捕获和未捕获的exception…我想稍后分析这些日志并按exception类型(类)对它们进行分组,并简单地按类型计算exception。 我正在使用HotSpot;) 也许更聪明的为什么这样做? 例如,任何免费的探查器(YourKit有它,但它不是免费的)? 我认为JRockit在管理控制台中有exception计数器,但是没有看到类似的HotSpot。

在优化过程中Java内联方法会不会?

我想知道JVM / javac是否足够聪明 // This line… string a = foo(); string foo() { return bar(); } string bar() { return some-complicated-string computation; } 成 string a = bar(); 或者在发布案例中删除对foo()的不必要调用(因为无法访问的代码): string a = foo(bar()); // bar is the same … string foo(string b) { if (debug) do-something-with(b); } 对于第一个例子我的感觉是肯定的,对于第二个例子我的感觉是“不太确定”,但是有人可以给我一些指示/链接来确认吗?

存储在java类文件中的generics类型在哪里?

我很清楚generics类型在编译时会从Java代码中删除。 1.5+ JVM使用什么信息(属性?)来实现getGenericType等?