我目前正在尝试调整我的Eclipse安装并遇到了“-vm”选项。SO上的其他帖子提到始终使用最新的可用JVM是件好事,因为它们在性能方面不断提高,所以我可能会这样做。我想知道如果你没有指定“-vm”参数,你怎么能找到运行JVMEclipse的东西。我在文档中找到了以下内容,但这并没有说明它将如何查找JVM:whenpassedtotheEclipseexecutable,thisoptionisusedtolocatetheJavaVMtousetorunEclipse.ItmustbethefullfilesystempathtoanappropriateJavaexecutable
我需要配置Tomcat内存设置作为大型安装的一部分,因此事后使用配置应用手动配置Tomcat是不可能的。我以为我可以将JVM内存设置放入JAVA_OPTS环境变量中,但我正在使用jconsole对其进行测试以查看它是否有效,但它...无效。根据下面的评论,CATALINA_OPTS也不起作用。到目前为止,我可以让它工作的唯一方法是通过Tomcat配置GUI,这不是我的问题可接受的解决方案。 最佳答案 Serhii的建议有效,这里有更多细节。如果您查看安装的bin目录,您将看到catalina.sh或.bat脚本。如果您查看这些内容,
如果JVM有机会在更多对象分配请求到来之前运行GC,它是否可以在不重新启动的情况下从OutOfMemoryError中恢复?不同的JVM实现在这方面有什么不同吗?我的问题是关于JVM恢复,而不是用户程序试图通过捕获错误来恢复。换句话说,如果在应用程序服务器(jboss/websphere/..)中抛出OOME,我是否必须重新启动它?或者,如果进一步的请求似乎没有问题,我可以让它运行吗? 最佳答案 它可能有效,但通常是个坏主意。无法保证您的应用程序将成功恢复,或者它会知道它是否没有成功。例如:确实可能没有足够的内存来执行请求的任务,即
我想知道JAVA_HOME是什么。javac.exe和java.exe的路径在哪里设置。它在环境变量中吗?当我从命令提示符编译Java程序时,JVM是如何找到javac.exe的? 最佳答案 JVM没有找到java.exe。它甚至不叫它。java.exe由操作系统(在本例中为Windows)调用。JAVA_HOME只是一个约定,通常被Tomcat、其他JavaEE应用服务器和构建工具(如Gradle)用来查找Java所在的位置。从您的角度来看,重要的是Java/bin目录位于您的PATH上,因此Windows可以找到.exeJDK附
本着提问的精神Java:WhydoesMaxPermSizeexist?,我想问一下为什么OracleJVM对其内存分配池的大小使用了一个固定的上限。默认为物理RAM的1/4(有上限和下限);因此,如果您有一个需要大量内存的应用程序,您必须手动更改限制(参数-Xmx),否则您的应用程序将表现不佳,甚至可能因OutOfMemoryError而崩溃。为什么这个固定的限制甚至存在?为什么JVM不像大多数操作系统上的本地程序那样按需分配内存?这将解决Java软件的一整类常见问题(只需Google看看网上有多少关于通过设置-Xmx解决问题的提示)。编辑:一些答案指出,这将保护系统的其余部分免
有最大值吗?您可以将Xmx设置为的大小?我将它设置为1024m并且Eclipse可以正常打开。当我将其设置为1024以上时,eclipse无法打开,并且出现错误“jvm已终止。退出代码=-1”...我这样做是因为我不断收到“java.lang.OutOfMemoryError:Javaheapspace”。我正在读取一个35.5Mb的.txt文件,当它只是使用“while((line=reader.readLine())!=null)”循环读取文件时会发生此错误。我原以为1024mb就足够了。谁能帮帮我? 最佳答案 是的,有一个最大
为什么我们需要在JVM参数前加上-D例如从命令行运行jar时?例如java-jar-DmyProp="HelloWorld"myProgram.jar用于运行带有系统参数myProp的myProgram.jar。那么为什么是领先的-D?为什么Java的架构师不能让我们简单地做:java-jar-myProp="HelloWorld"myProgram.jar我希望得到的答案不仅仅是“因为它就是这样”。额外问题:为什么字母-D与任何其他字母不同,它代表什么?注意:此问题首先询问为什么需要使用“D”或任何其他字母。它不太关心选择特定字母“D”而不是任何其他字母,尽管这是一个额外的问题。奖金
每当我重新启动应用程序时,它建立在java支柱Mysql和Jboss4.05版本我收到错误,因为Addressalreadyinuse:JVM_Bind我知道的唯一解决方法是重新启动机器并重试,它会起作用。Else有时我会执行Ctrl-Alt-Del并停止所有与Java相关的进程,有时这也可以。但是具体的原因是什么?我们如何才能避免这个问题呢? 最佳答案 Addressalreadyinuse:JVM_Bind表示其他应用程序已经在监听您当前应用程序尝试绑定(bind)的端口。您需要做的是,更改当前应用程序的端口或更好;只需找出已经
我尝试在互联网上搜索有关-Xmn选项的信息,但没有成功。谁能解释一下这代表什么以及如何使用它来调整JVM? 最佳答案 来自here:-Xmn:thesizeoftheheapfortheyounggenerationYounggenerationrepresentsalltheobjectswhichhaveashortlifeoftime.Younggenerationobjectsareinaspecificlocationintotheheap,wherethegarbagecollectorwillpassoften.All
我们有一个长期存在的服务器进程,它在短时间内很少需要大量RAM。我们看到,一旦JVM从操作系统获取了内存,它永远不会将其返回给操作系统。我们如何要求JVM将堆内存返回给操作系统?通常,此类问题的公认答案是使用-XX:MaxHeapFreeRatio和-XX:MinHeapFreeRatio。(参见例如1、2、3、4)。但是我们是这样运行java的:java-Xmx4G-XX:MaxHeapFreeRatio=50-XX:MinHeapFreeRatio=30MemoryUsage在VisualVM中仍然可以看到:很明显,JVM不支持-XX:MaxHeapFreeRatio=50,因为h