Questions tagged «jvm-arguments»

可能影响Java虚拟机性能特征的命令行选项和环境变量

12
如何在Mac上的IntelliJ IDEA中增加IDE内存限制?
我在Mountain Lion上使用IDEA 12 Leda。我想增加IDE可以使用的最大内存。我将Info.plist文件中的VMOptions设置为 -Xmx2048m -ea -XX:+HeapDumpOnOutOfMemoryError -Xverify:none -Xbootclasspath/a:../lib/boot.jar 当我打开IDEA时,仍然看到最大内存为711m。 jps -v 显示我的VMOptions已加载,但已被以下选项取代。 29388 **-Xmx2048m** -ea -XX:+HeapDumpOnOutOfMemoryError -Xverify:none -Xbootclasspath/a:../lib/boot.jar -Xms128m **-Xmx800m** -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=64m -XX:+UseCodeCacheFlushing -XX:+UseCompressedOops -Didea.paths.selector=IdeaIC12 -Dsun.java2d.noddraw=true -Didea.max.intellisense.filesize=2500 -Didea.dynamic.classpath=false -Didea.jars.nocopy=false -Dsun.java2d.d3d=false -Dapple.awt.fullscreencapturealldisplays=false -Dapple.laf.useScreenMenuBar=true -Djava.endorsed.dirs= -Dswing.bufferPerWindow=false -Didea.fatal.error.notification=enabled -Didea.cycle.buffer.size=1024 -Didea.popup.weight=heavy -Didea.xdebug.key=-Xdebug -Dapple.awt.graphics.UseQuartz=true -Dsun.java2d.pmoffscreen=false -Didea.no.launcher=false -DCVS_PASSFILE=~/.cvspass -Didea.use.default.antialiasing.in.editor=false -Dcom.apple.mrj.application.live-resize=false -Didea.smooth.progress=false 29392 Jps -Dapplication.home=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home -Xms8m …


3
JVM标志CMSClassUnloadingEnabled实际做什么?
CMSClassUnloadingEnabled除了一些非常模糊的高级定义(例如“摆脱PermGen问题”(不是,btw))之外,我一生无法找到Java VM标志实际作用的定义。 我查看了Sun / Oracle的站点,甚至选项列表都没有真正说明它的作用。 基于该标志的名称,我猜测CMS垃圾收集器默认情况下不会卸载类,并且该标志将其打开-但我不确定。

5
如何从Java应用程序内部获取VM参数?
我需要检查是否可以显式设置可以传递给JVM的某些选项,或者是否具有其默认值。 具体来说:我需要创建一个特定线程,其本机堆栈大小要比默认线程大,但如果用户希望通过指定-Xss选项自己处理此类事情,我想创建所有具有默认堆栈大小的线程(将由用户在-Xss选项中指定)。 我已经检查了类java.lang.System和java.lang.Runtime,但是这些类并没有给我有关VM参数的任何有用信息。 有什么方法可以获取我需要的信息吗?
162 java  jvm  jvm-arguments 

3
_JAVA_OPTIONS,JAVA_TOOL_OPTIONS和JAVA_OPTS之间的区别
我认为最好在_JAVA_OPTIONS和之间进行比较JAVA_TOOL_OPTIONS。我一直在寻找一个,但是什么也找不到,所以希望我们可以在Stackoverflow上找到相关知识。 JAVA_OPTS包括在内是为了完整性。它不是JVM的一部分,但是有很多关于它的问题。 我知道的: 到目前为止,我发现: JAVA_OPTSJDK并不使用它,而是其他许多应用程序使用它(请参阅此文章)。 JAVA_TOOL_OPTIONS并且_JAVA_OPTIONS是将JVM参数指定为环境变量而不是命令行参数的方法。 至少由java和拾取javac 它们具有以下优先级: _JAVA_OPTIONS (覆盖其他) 命令行参数 JAVA_TOOL_OPTIONS (被其他人覆盖) 我想知道什么 是否有任何官方文件进行比较JAVA_TOOL_OPTIONS和_JAVA_OPTIONS JAVA_TOOL_OPTIONS和之间是否有其他区别_JAVA_OPTIONS(优先顺序除外)。 哪些可执行文件可以使用JAVA_TOOL_OPTIONS和_JAVA_OPTIONS(java以及和之外javac) 什么可以被包含在任何限制JAVA_TOOL_OPTIONS和_JAVA_OPTIONS 官方文件 我尚未找到有关的任何文档_JAVA_OPTIONS。的文档JAVA_TOOL_OPTIONS并没有太多区别: 由于无法始终访问或修改命令行,例如,在嵌入式VM或仅在脚本内部深层启动的VM中,可以提供JAVA_TOOL_OPTIONS变量,以便在这种情况下可以启动代理。... 示例脚本 这是我用来弄清楚的代码。控制台输出作为注释包括在内: export JAVA_OPTS=foobar export JAVA_TOOL_OPTIONS= export _JAVA_OPTIONS="-Xmx512m -Xms64m" java -version # Picked up JAVA_TOOL_OPTIONS: # Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m # java version "1.7.0_40" OpenJDK Runtime Environment (IcedTea …
151 java  jvm  jvm-arguments 


5
在不使用调试参数启动JVM的情况下调试Java应用程序
通常,要将调试器附加到正在运行的jvm,您需要使用以下参数启动jvm: > java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n 现在,如果我要调试不是在调试模式下启动的进程,该怎么办? 当生产系统(即在没有调试args的情况下启动)出现“随机”(我宽松地使用术语)错误时,就会出现这种情况。因此,我无法使用适当的参数重新启动jvm,因为没人知道如何再次再现该错误。在这种情况下是否不可能附加到JVM? 只是为了澄清,除非将它们以调试方式启动,否则无法使用jdb之类的工具来附加至已在运行的JVM。 从JVM手册页 使用jdb的另一种方法是将其附加到已经运行的Java VM。使用jdb调试的VM必须使用以下选项启动:

12
“ VM初始化期间发生错误;-Xmx3G无法为对象堆保留足够的空间”
首先,我有一个装有8gb ram的盒子,所以我怀疑总内存是问题所在。此应用程序在6gb或更少的计算机上运行良好。 我正在尝试在Eclipse的“运行配置”中的“ VM参数”下使用-Xmx3G保留3GB的空间。 每次我尝试保留1500mb以上时,都会出现以下错误:“ VM初始化期间发生错误;-Xmx3G无法为对象堆保留足够的空间” 这里发生了什么?

5
为内存密集型应用程序增加JVM最大堆大小
我需要运行一个使用2GB以上内存的Java内存密集型应用程序,但是在增加堆最大大小时遇到​​了问题。到目前为止,我已经尝试了以下方法: 设置-Xmx参数,例如-Xmx3000m。这种方法在创建JVM时失败。从我搜索过的内容来看,-Xmx必须小于2GB。 使用-XX:+ AggressiveHeap选项。当我尝试这种方法时,即使我的计算机有8GB的内存,也会收到“内存不足”的错误消息,指出堆大小为1273.4 MB。 我还有其他方法可以尝试增加JVM的最大堆大小吗?以下是计算机规格的摘要: 作业系统:Windows 7(64 bit) 处理器:Intel Core i7(2.66 GHz) 记忆体:8 GB java -version: java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)



1
CMSPermGenSweepingEnabled与CMSClassUnloadingEnabled
我之前曾问过这个问题-JVM标志CMSClassUnloadingEnabled实际做什么?,但是这次略有不同! 如果我启动-XX:+CMSPermGenSweepingEnabled设置了标志的Java VM,则会显示以下消息: 以后请使用CMSClassUnloadingEnabled代替CMSPermGenSweepingEnabled 该-XX:+CMSPermGenSweepingEnabled标志通常用于减轻PermGen OutOfMemory错误,但是我在其他地方读到,人们发现通过遵循上述建议,他们仍然存在这些错误,但是坚持使用-XX:+CMSPermGenSweepingEnabled以及-XX:+CMSClassUnloadingEnabled他们的VM在重新启动之间停留的时间更长。 难道-XX:+CMSClassUnloadingEnabled真的优先于-XX:+CMSPermGenSweepingEnabled或者是仍然在他俩都有些什么好处? 提前致谢 Rich ps:我知道perm gen问题的根本原因通常仍然是Classloader泄漏,这更多地是关于使用上述选项时JVM产生的消息。

8
加快Java -Xms和-Xmx选项的权衡
给定这两个命令 A: $ java -Xms10G -Xmx10G myjavacode input.txt B: $ java -Xms5G -Xmx5G myjavacode input.txt 我有两个问题: 由于命令A保留了更多的参数存储空间,因此A的运行速度会比B快吗? 如何-Xmx和-Xms影响正在运行的进程,我的程序的输出?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.