草庐IT

Cucumber-JVM

全部标签

java - 如何创建自定义 JVM?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我正在阅读http://www.cafeaulait.org/javafaq.html上的项目#6.10|我开始想知道大公司是如何着手创建他们自己的JVM实现的。对一个人来说,一个实验性的东西是可能的(并且可行的)吗?

java - 让 JVM 根据需要增加内存需求,直到达到 VM 限制的大小?

我们发布了一个Java应用程序,其内存需求可能会因所处理数据的大小而有很大差异。如果您不设置最大VM(虚拟内存)大小,通常JVM在大数据上因GC失败而退出。我们希望看到的是JVM请求更多内存,因为GC无法提供足够的内存,直到可用的VM全部耗尽。例如,从128Mb开始,并在GC失败时按几何级数(或其他步骤)增加。JVM(“Java”)命令行允许显式设置最大VM大小(各种-Xm*命令),您认为这样设计就足够了。我们尝试在应用程序附带的.cmd文件中执行此操作。但如果你选择任何特定的数字,你会得到两种不良行为之一:1)如果你的数字足够小,可以在大多数情况下工作目标系统(例如1Gb),它对于大

java - 是什么导致 JRE 6 JVM 代码缓存泄漏?

自从切换到JRE6后,我服务器的代码缓存使用(非堆)一直在无限增长。我的应用程序在运行时创建了很多类,但这些类在GC过程中被成功卸载。我可以看到这些类在gc日志中被卸载,并且permGen的使用保持不变。我特别确保在我的代码中,一旦我完成这些类,它们就会被孤立,这样它们就能正确地从permGen中收集垃圾。然而,代码缓存不断增长。我在切换到JRE6后才意识到代码缓存。所以我想我的问题是:GC是否包含代码缓存?什么会导致代码缓存内存泄漏,特别是。JDK6中是否存在这方面的错误? 最佳答案 您可能想通读一下这个讨论,然后回过头来看看哪些

java - 'new'操作符使用构造函数初始化内存时JVM做了什么?

RealEstatev=newRealEstate();我在RealEstate()中使用了这个new关键字。我知道new使用RealEstate类构造函数分配内存并初始化内存。JVM在这里做什么? 最佳答案 new运算符实际上并不使用构造函数的帮助来分配内存。它与构造函数无关。BasicallyJava'sversionofmallocisnew.新运算符:为对象分配内存调用对象构造函数返回对该内存的引用构造函数单独执行以执行初始化期间的任何操作,例如为对象和变量分配值。如果没有定义构造函数,那么编译器将创建默认构造函数并分配默认

java - JVM字节码中的NOP是干什么用的?

在当今的JVM中,Java虚拟机的NOP操作码是否有任何实际用途?如果是这样,在哪些情况下会在字节码中生成NOP?我什至有兴趣查看使用NOP编译成字节码的Java代码示例。更新BCEL的MethodGen类说,WhilegeneratingcodeitmaybenecessarytoinsertNOPoperations.我猜其他字节码生成库也在同一条船上,正如已接受的答案中所指出的那样。 最佳答案 一些NOP字节码用例用于class文件转换、优化和由工具执行的静态分析,例如ApacheBCEL,ASM,FindBugs,PMD等。

java - 在实践中,JVM如何收集SoftReferences?

我有两个单独的缓存在JVM中运行(一个由第三方库控制),每个缓存都使用软引用。我希望JVM在库控制的缓存之前先清除受控的缓存。SoftReferencejavadoc指出:Allsoftreferencestosoftly-reachableobjectsareguaranteedtohavebeenclearedbeforethevirtualmachinethrowsanOutOfMemoryError.Otherwisenoconstraintsareplaceduponthetimeatwhichasoftreferencewillbeclearedortheorderinwh

Java 阻塞问题 : Why would JVM block threads in many different classes/methods?

更新:这看起来像是内存问题。一个3.8Gb的Hprof文件表明,当发生这种“阻塞”时,JVM正在转储其堆。我们的运营团队看到该站点没有响应,进行了堆栈跟踪,然后关闭了该实例。我相信他们在堆转储完成之前关闭了站点。日志中没有错误/异常/问题的证据——可能是因为JVM在生成错误消息之前被终止了。原始问题我们最近遇到了一个应用程序出现——对最终用户来说——挂起的情况。我们在应用程序重新启动之前获得了堆栈跟踪,并且我发现了一些令人惊讶的结果:在527个线程中,463个线程状态为BLOCKED。过去以往被阻塞的线程通常有这样的问题:1)一些明显的瓶颈:例如某些数据库记录锁定或文件系统锁定问题导致

java - 如何在 64 位 Linux 上运行 32 位 JVM?

我正在尝试在64位DebianMint机器上运行32位HotspotJVM。乍一看一切正常,直到您尝试使用Swing运行某些东西:java.lang.UnsatisfiedLinkError:/opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so:libXext.so.6:cannotopensharedobjectfile:Nosuchfileordirectory将其添加到库路径:exportLD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu。但是它给出了这个错误:java.lang.Uns

java - 如何禁用编译器和 JVM 优化?

我有这段代码正在测试Calendar.getInstance().getTimeInMillis()与System.currentTimeMilli():longbefore=getTimeInMilli();for(inti=0;i我想确保没有发生JVM或编译器优化,这样测试才会有效并且会实际显示差异。如何确定?编辑:我更改了代码示例以使其更加清晰。我在这里检查的是在不同的实现中调用getTimeInMilli()需要多长时间-Calendar与System。 最佳答案 我认为您需要禁用JIT。添加到您的运行命令下一个选项:-Dj

java - 有用于 Java 的 IKVM 吗?我可以在 JVM 上运行 .NET 程序集吗?

IKVM是一个了不起的野兽,它让我可以在.NET环境中执行Javajar。也就是说,它是在.NET运行时(CLR)上编写的JVM。是否存在相反的情况?有人在JVM上写过CLR吗?通过合适的翻译和基类库实现,我们可能会发现.NET代码在积极的JIT编译器(如HotSpot)中比在CLRJIT中执行得更快。 最佳答案 大多数Java程序使用IKVM(32位)运行时比使用JavaSE快一点。我的测试显示速度提高了5-10%。我认为使用HotSpotJIT时MSIL代码会运行得更慢。下一个问题是MSIL比Java字节码有更多的特性。模拟它可