考虑以下命令行
java -Xms128m -Xms256m myapp.jar
Run Code Online (Sandbox Code Playgroud)
哪些设置适用于JVM最小内存(Xms选项):128m或256m?
我正在尝试JAVA_OPTS在Windows机器上设置Tomcat,但如果我添加多个变量,我会一直收到错误.
例如,这有效:
set JAVA_OPTS="-Xms512M"
Run Code Online (Sandbox Code Playgroud)
但这不是:
set JAVA_OPTS="-Xms512M -Xmx1024M"
Run Code Online (Sandbox Code Playgroud)
它导致错误:
Invalid initial heap size: -Xms512M -Xmx1024M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
就好像我可以设置一个变量(-Xmx也可以)但不是几个.
我正在使用指示setenv.bat文件,我的Tomcat是7.0.35.
希望您能够帮助我.我在mac的Dock上有一个奇怪的org.apache.catalina.startup.Bootstrap图标.我和Lion一起使用10.7.2版本.我使用这个:在startup.sh和shutdown.sh导出JAVA_OPTS =" - Djava.awt.headless = true"但是遇到了同样的问题.提前致谢.
我怎样才能找到Maven正在使用哪些Java选项(Xmx,Xms,Xss等)?
我发现设置它们的方法是通过环境MAVEN_OPTS.现在我想要一种方法来确保它获得正确的设置.
编辑:我认为这与这个问题不同,因为我不想看到环境变量的价值.我更愿意看看Maven实际使用了哪些设置,无论是来自env var,settings.xml还是其他方法.
编辑2:我也对为Maven构建设置Java选项的其他方法感兴趣
我想知道,-->--运营商在Java中做了什么?
例如,如果我有以下代码:
int x = 3;
int y = 3;
if (x -->-- y) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
这总是返回true.
谢谢!
我有一个java程序,我运行并用jps找出它的进程ID.
我怎样才能看到这个java进程的-Xms和-Xmx变量的值是多少?
我在 jboss 上有一个通过 log4j 进行日志记录的应用程序。当我通过bat文件(standalone.bat)运行我的服务器时,日志工作正常,但standalone.sh文件下有问题。以下是我在standalone.bat中设置JAVA_OPTS的方法:
set "JAVA_OPTS=%JAVA_OPTS% -Dlog4j.configuration=file:../standalone/configuration/log4j.xml"
Run Code Online (Sandbox Code Playgroud)
它有效。我应该如何在standalone.sh 文件中执行此操作?我尝试过这样的事情:
JAVA_OPTS= "$JAVA_OPTS -Dlog4j.configuration=file:$JBOSS_HOME/standalone/configuration/log4j.xml"
Run Code Online (Sandbox Code Playgroud)
但这不起作用。有任何想法吗?在此先感谢您的帮助。
我在 x64 Java 上使用 IntelliJ 14.3。可用内存:10Gb(总 RAM 16Gb)
(基本设定-Xmx8000M或更大)
问题是我需要超过 4Gb 的内存来用于应用程序。我找不到任何问题的答案或解决方案,我已经寻找了好几天了。
我一直在 stackoverflow 上寻找提出同样问题的人,但他们对默认值有问题-Xmx512M,并且不断链接到其他答案,链接到另一个答案(浪费时间,到目前为止还没有解决方案)。
我尝试了以下方法但不起作用:
idea64.exe.vmoptionsIntelliJ的文件:似乎没有做任何事情,没有错误,没有内存增加,什么都没有。(看起来它忽略了该文件)JAVA_OPTIONS:使 IntelliJ 在启动时崩溃或冻结,而不使用比以前更多的内存。1512M相同的堆大小问题*笔记:
我工作场所的某人可以在 IntelliJ 中将其设置为工作(但我们不知道如何
在命令行中运行该类-Xmx8000M似乎可以工作,但我想在 IntelliJ 中设置它以便于使用
如果有人遇到这个问题并可以提出解决方案,我会礼貌地要求他们这样做。
我正在尝试解决使用 Java 17 运行时运行 Nexus IQ 扫描仪的问题。
错误是
java.lang.reflect.InaccessibleObjectException:无法使受保护的最终 java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) 抛出 java.lang .ClassFormatError 可访问:模块 java.base 不会向未命名模块“打开 java.lang”@7225790e
所以我尝试将--add-opens java.base/java.lang=ALL-UNNAMED修复传递给运行的 JVM nexus-iq-cli.jar。
不幸的是,我无法完全控制java -jar ...在 CI 上执行的命令,否则我只会--add-opens java.base/java.lang=ALL-UNNAMED显式地传递。由于该限制,我尝试使用其他一些方法来设置全局 JVM 参数设置。我想到的一种方法是使用_JAVA_OPTIONS环境变量。
令我惊讶的是 Java 因错误而退出:
无法识别的选项:--add-opens
当我尝试按如下方式传递时:
# with unix shell you can set value to some variable and execute something in one line
_JAVA_OPTIONS='--add-opens java.base/java.lang=ALL-UNNAMED' java
Run Code Online (Sandbox Code Playgroud)
另一方面,当我直接传递此选项时,Java 完全正常并且按预期运行:
java --add-opens java.base/java.lang=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)
--add-opens java.base/java.lang=ALL-UNNAMED如果我无法直接控制java -jarCI 执行 Nexus IQ 扫描步骤的命令,我缺少什么以及传递参数的其他可能方法是什么?
-Xss256k
-Djava.net.preferIPv4Stack=true
-Dfile.encoding=UTF-8
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintClassHistogram
-XX:+PrintClassHistogramBeforeFullGC
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintPromotionFailure
-XX:PrintFLSStatistics=1
-verbose:gc
-XX:GCLogFileSize=64m
-XX:NumberOfGCLogFiles=2
-XX:+UseGCLogFileRotation
-Xloggc:./logs/gc.log
Run Code Online (Sandbox Code Playgroud)
以上是我正在为我的申请传递的JAVA_OPTS的完整列表.问题是如果在应用程序启动时日志目录不存在,有时不会创建gc.log文件.但是,如果我确保应用程序启动时日志目录存在,则始终会创建gc.log.
所以我正确地假设在我的log4j框架创建了日志目录之前,如果发生GC,Xloggc将安全地失败吗?除了手动预创建日志目录之外,还有其他解决方法吗?