草庐IT

java - 启动 idea64.exe 时出错

当我尝试打开idea64.exe(IntelliJIDEA64位版本)时出现错误“未找到JVM安装。请重新安装产品或安装JDK。”这是为什么?我同时安装了Java8Update5(64位)和JavaSEDevelopmentKit8Update5(64位)。此外,idea.exe(32位)工作正常 最佳答案 AccordingtoJetBrains,idea64.exe使用这个JDK搜索序列:IDEA_JDK_64environmentvariable..\jre64directorysystemRegistryJDK_HOMEen

【JVM类加载】类的加载,连接与初始化

类加载在java代码中,类型的加载,连接与初始化过程都是在程序运行期间完成的(类class文件信息在编译期间已经确定好)。提供了更大的灵活性,增加了更多的可能性。类加载器java虚拟机与程序的生命周期:在如下几种情况下,java虚拟机将结束生命周期:执行System.exit()方法程序正常执行结束程序在执行过程中遇到了异常或错误向上抛出异常抛到main入口程序终止由于操作系统出现错误而导致java虚拟机进程终止类的加载流程三部分加载:查找并加载类的二进制数据连接:验证:确保被加载的类的正确性(字节码是否符合JVM的规范)准备:为类的静态变量分配内存,并将其初始化值设置为默认值如publics

java - 为什么 JVM 不在 Windows x86 上发出预取指令

如标题所述,为什么OpenJDKJVM不在Windowsx86上发出预取指令?请参阅OpenJDKMercurial@http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/c49dcaf78a65/src/os_cpu/windows_x86/vm/prefetch_windows_x86.inline.hppinlinevoidPrefetch::read(void*loc,intxinterval){}inlinevoidPrefetch::write(void*loc,intxinterval){}没有评论,除​​了源代码之外我没

java - Squeak 跨平台运行 "bit-identically"是什么意思,而 Java 却没有?

艾伦·凯pointsout“与Java不同,[Squeak]在每台机器上的运行都完全相同——这是我们20年前发明的”。wikipediapage还提到了这一点:Squeakisavailableformanyplatforms,andprogramsproducedononeplatformrunbit-identicalonallotherplatforms.由于具有不同指令集的机器显然无法在native运行位相同的程序,所以当有人说Squeak可以在不同的机器上以Java不能的方式运行位相同的程序时,这意味着什么?我的印象是编译后的Java类在任何JVM上的任何机器上都以相同的方式

java - -HeapDumpOnOutOfMemoryError 和 +HeapDumpOnOutOfMemoryError 选项有什么区别?

在甲骨文的officialdocHeapDumpOnOutOfMemoryError选项用加号和减号指定。我很好奇它们代表什么,因为官方用户指南中没有解释 最佳答案 来自page你引用了:Somecommand-lineoptionsusetheHotSpotimplementationformat;thatis,youmustplacethecolon(:)betweenthe-XXandtheoptionnamefollowedbyathenecessaryoperatortoindicateenabling(+)ordisab

java - 使用 Java 11 时 JDK_JAVA_OPTIONS 和 JAVA_TOOL_OPTIONS 有什么区别?

JDK_JAVA_OPTIONS之间的确切区别是什么?和JAVA_TOOL_OPTIONS什么时候使用Java11?我正在使用一个小型测试程序:publicclassFoo{publicstaticfinalvoidmain(String[]args){System.out.println("arg:"+System.getProperty("arg"));}}这两个环境变量看起来做的是一样的,只是输出略有不同。这让我相信他们可能有不同的用例:$JDK_JAVA_OPTIONS="-Darg=jdk"javaFooNOTE:PickedupJDK_JAVA_OPTIONS:-Darga

java - Lambda 性能改进,Java 8 对比 11

我在lambda与方法引用上运行了一些JMH测试,看起来类似于:IntStream......reduce(Integer::max)vs.IntSream.......reduce((i1,i2)->Integer.max(i1,i2))我注意到,在Java8中,方法引用的执行速度大约是lambda的5倍。当我在Java11中运行测试时,这两种方法的执行时间与Java8中的方法引用差不多快。因此Java11中的lambda和方法引用之间的性能没有重大差异。我的问题是:从Java8到11进行了哪些改进以提高此性能?我正在使用OpenJDK。编辑我的基准:@BenchmarkMode(M

java - 为高响应服务器应用程序调整 JVM (GC)

我在Linux64位上运行一个应用服务器,它有8个核心CPU和6GB内存。服务器必须高度响应。经过一些检查,我发现服务器上运行的应用程序创建了相当大量的短生命对象,只有大约200~400MB的长生命对象(只要没有内存泄漏)看完http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html我使用这些JVM选项-server-Xms2g-Xmx2g-XX:MaxPermSize=256m-XX:NewRatio=1-XX:+UseConcMarkSweepGC结果:minorGC耗时0.01~0.02秒,majorGC

java - 在同一个 JVM 上设置多个信任库

我有一个在weblogic服务器上运行的Java应用程序。该应用程序有两个不同的模块,它们使用SSL连接到外部Web服务-比如说模块A和模块B。模块A-基于Axis构建-使用信任库AMoudleB-基于Spring-ws构建-使用信任库B。模块A已存在。正在引入模块B。我需要能够根据正在调用的模块在JVM中动态设置信任库。由于某些限制,我没有选择权-创建自定义key管理器。-使用一个信任库我尝试使用System.setPropertyim模块B代码库来设置信任库。但是,它仅在首先调用模块B时才有效。例如-说我重新启动了JVM然后我调用模块A-它在JVM中设置了它自己的信任库然后我调用模

java - 发生 OutOfMemoryError 时 Java 进程的行为

Java程序在获取OutOfMemoryError时的行为是什么?.是否有任何定义的行为?进程会崩溃还是会进入等待/hibernate状态?更新:如果我没有在我的代码中处理它? 最佳答案 并且OutOfMemoryError的处理方式与任何其他异常一样:如果它被捕获,则不会再发生任何事情。如果未被捕获,则threads或threadsgroups未捕获的异常处理程序处理它。这几乎总是导致线程停止。但是有两个因素在其他异常中并不存在:OutOfMemoryError是一个Error而不是Exception.这意味着它极不可能在任何地方