草庐IT

java - JVM 在哪里存储原始变量?

JavaJVM在哪里存储原语变量,原语使用的内存在使用后如何释放?我猜它在堆栈上? 最佳答案 简单的回答:这取决于变量的声明位置,而不是其类型。局部变量存储在堆栈中。实例和静态变量存储在堆上。不要忘记,对于引用类型的变量,变量的值是引用,而不是对象。(数组也是引用类型-所以如果你有一个int[],值将在堆上。)现在,这可能是一个过于简单化的答案,因为智能VM可能能够检测特定引用类型变量是否引用了永远无法“逃脱”当前方法的对象。如果是这种情况,它可能会将整个对象内联到堆栈中。但是在概念上这个模型是准确的。因此,int类型的变量被声明为

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

我正在尝试调试此问题,但不确定我需要在哪里为Eclipse替换SWTjar文件。当前系统配置:EclipseHelios3.6-32BitJDK1.6JVM-32BitWindows7-64Bit错误信息:java.lang.UnsatisfiedLinkError:Cannotload64-bitSWTlibrarieson32-bitJVMatorg.eclipse.swt.internal.Library.loadLibrary(Library.java:194)atorg.eclipse.swt.internal.Library.loadLibrary(Library.java

java - Android Studio 错误 : "Environment variable does not point to a valid JVM installation"

尝试在我的计算机上运行AndroidStudio时,我收到以下错误:TheEnvironmentvariableJAVA_HOME(withavalueofC:\Program Files(x86)\Java\jdk1.7.0_51\bin)doesnotpointtoavalidJVMinstallation我试图删除JAVA_HOME环境变量上的\bin扩展,但它给了我以下错误:NoJVMFound.Pleaseinstalla64-bitJDK.IfyoualreadyhaveaJDKinstalled,defineaJAVA_HOMEvariableinComputer>Sys

java - 在最近的 JVM 中,不可见的引用仍然是一个问题吗?

我正在阅读JavaPlatformPerformance(遗憾的是,自从我最初提出这个问题以来,该链接似乎已经从互联网上消失了),A.3.3节让我担心。我一直在假设退出范围的变量将不再被视为GC根,但这篇论文似乎与此相矛盾。最近的JVM,尤其是Sun的1.6.0_07版本,是否还有这个限制?如果是这样,那我还有很多代码要分析……我问这个问题是因为这篇论文是1999年的-有时情况会发生变化,尤其是在GC领域。由于该论文不再可用,我想解释一下这个问题。该论文暗示在方法内定义的变量将被视为GC根,直到方法退出,而不是直到代码块结束。因此,必须将变量设置为null以允许对引用的对象进行垃圾回收

java - 在 JVM 之上运行/解释 C?

有没有办法在JVM上运行纯c代码?不通过JNI连接,运行,就像你可以通过JRuby运行ruby​​代码,或者通过Rhino运行javascript。如果目前没有解决方案,您建议我应该怎么做?显然,我想使用尽可能多的部分解决方案来实现它。ANTLR似乎是一个不错的起点,拥有完整的“ANSIC”语法实现...我应该使用ANTLR生成的代码在JVM上构建一个“玩具”虚拟机吗? 最佳答案 2012-01-26更新:根据thispageonthecompany'ssite该产品已被买断,不再可用。是的。这里是acommercialCcompi

Java:如何将存储为 byte[] 的类加载到 JVM 中?

如果已经将整个.class文件序列化为byte[],并且假设类的名称是已知的(与byte[]一起传递),那么如何转换byte[]->Class->然后加载它到JVM以便我以后可以通过调用Class.forName()来使用它?注意:我这样做是因为我将.class发送到另一个主机,而主机的JVM不知道这个.class。 最佳答案 我现在实际上在测试中使用这样的东西来将一组类定义作为byte[]提供给ClassLoader:publicstaticclassByteClassLoaderextendsURLClassLoader{pri

c# - C# 中的等效 JVM 是什么?

JVM是运行Java应用程序所必需的。我想知道c#中是否有任何等价物?如果是,那是什么? 最佳答案 CommonLanguageRuntime或CLR。这个运行时不仅支持C#,还支持其他.NET语言,例如VisualBasic.NET。通常,每种语言都会向开发人员展示CLR上可用功能的子集(例如,纯粹按返回类型的方法重载在C#中通常不支持,但CLR支持)。就像Java编译为字节码一样,C#和其他.NET语言编译为Microsoft中间语言(MSIL)-唯一公开完整的CLR功能集的语言。当然,C#是definedpurelyasala

java - 哪些参数代表 JVM 内存选项中的内容?

有很多JVM参数会影响JVM的内存使用,例如-Xms、-Xmx、-Xns、-XX:MaxPermSize...他们是做什么的?还有吗?遇到什么错误(如OutOfMemoryError、StackOverflowError...)时我必须增加哪一项?我找不到适合他们的备忘单-让我们在这里创建一个。 最佳答案 -Xms:此选项设置初始和最小Java堆大小。-Xmx:此选项设置最大Java堆大小。Java堆(“堆”)是内存的一部分,其中内存块被分配给对象并在垃圾回收期间被释放。-XX:PermSize:-XX:MaxPermSize:用于

java - 了解 JVM 内存分配和 Java 内存不足 : Heap Space

我正在研究如何真正了解JVM中的内存分配是如何工作的。我正在编写一个内存不足的应用程序:堆空间异常。我知道我可以传入VM参数(例如Xms和Xmx)来增加JVM为正在运行的进程分配的堆空间。这是问题的一种可能解决方案,或者我可以检查我的代码是否存在内存泄漏并在那里解决问题。我的问题是:1)JVM实际上是如何为自己分配内存的?这与操作系统如何将可用内存传递给JVM有什么关系?或者更一般地说,任何进程的内存分配实际上是如何工作的?2)虚拟内存是如何发挥作用的?假设您有一个具有32GB物理内存的系统,并且您将所有32GB分配给您的Java进程。假设您的进程实际上消耗了所有32GB内存,我们如何

java - 同时运行在同一个JVM上运行的java程序?

假设我在同一台机器上同时运行两个java程序。程序会在单个JVM实例中运行,还是会在两个不同的JVM实例中运行? 最佳答案 如果您使用java命令(从命令行)启动每一个,它们将作为完全独立的JVMs运行.“程序”可以单独启动Threads在一个JVM中运行。 关于java-同时运行在同一个JVM上运行的java程序?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6264309/