我最近在阅读JRE 6 [ Java VM Options ]中可用的所有JVM参数,并看到了这一点:
-XX:+ StringCache:启用常用分配字符串的缓存.
现在我一直认为Java保留了一个实习池(正确的单词?)字符串,当使用字符串连接时,它不是创建新对象,而是从这个池中提取它们.有没有人曾经使用过这个论点,或者可以解释为什么需要它?
编辑:我试图运行一个基准测试,看看这个参数是否有任何影响,并且无法让Sun JVM识别它.这与:
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode,
sharing)
Run Code Online (Sandbox Code Playgroud)
所以我不确定这个论点是否有效.
是否可以使用-classpath选项java,添加或替换CLASSPATHenv变量的内容?
(注意,当我说"JVM"时,我的意思是"Hotspot",我正在运行最新的Java 1.6更新.)
示例情况:
我的JVM在-Xmx设置为1gb的情况下运行.目前,堆已经分配了500mb,其中使用了450mb.该程序需要在堆上加载另外200 MB.目前,堆中有300mb的"可收集"垃圾(我们假设它们都是最老一代的.)
在正常操作下,JVM会将堆增长到700 MB左右,并在它到达时进行垃圾收集.
在这种情况下我想要的是JVM首先gc,然后分配新的东西,这样我们最终的堆大小保持在500mb,而使用的堆在350mb.
是否有JVM参数组合可以做到这一点?
将 Java 版本更改为 17 后,我无法构建 Gradle 项目。
我正在使用 Gradle 7.3.1 版本,并且 Gradle 属性中有以下行:
org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xms1g -Xmx4g -XX:+UseG1GC -XX:+CMSClassUnloadingEnabled
Run Code Online (Sandbox Code Playgroud)
然后我得到以下错误
Unrecognized VM option 'CMSClassUnloadingEnabled'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
如果我删除-XX:+CMSClassUnloadingEnabled然后我收到此错误:
Unable to make field private int java.lang.reflect.Field.modifiers accessible: module java.base does not "opens java.lang.reflect" to unnamed module @1b9ee3e0
Run Code Online (Sandbox Code Playgroud) 我一直想知道,为什么Java要求你手动设置堆大小?我的印象是,需要为程序运行,直到OS可以分配没有更多的其他语言编写的程序仅分配尽可能多的内存下.
在Java世界中,我们需要设置堆,堆栈和permgen大小.虽然这是很简单的忘记增加这些以"足够大"的数字是排名第一的原因,我已经看到了服务器宕机.
为什么不能告诉Java随着时间的推移增加堆/ stack/permgen?
我在Solaris计算机上运行安装程序时遇到此错误:
Installing...
-------------
[==================|==================|==================|==================]
[---Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
Stack Trace:
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
at sun.awt.X11FontManager.isHeadless(X11FontManager.java:487)
at sun.awt.X11FontManager.getFontPath(X11FontManager.java:767)
at sun.font.SunFontManager.getPlatformFontPath(SunFontManager.java:3288)
at sun.font.SunFontManager$11.run(SunFontManager.java:3314)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.loadFonts(SunFontManager.java:3310)
at sun.awt.X11FontManager.loadFonts(X11FontManager.java:439)
at sun.font.SunFontManager.findFont2D(SunFontManager.java:2347)
at sun.font.SunFontManager.findFont2D(SunFontManager.java:2285)
at java.awt.Font.getFont2D(Font.java:498)
at java.awt.Font.getFamily(Font.java:1187)
at java.awt.Font.getFamily_NoClientCode(Font.java:1161)
at java.awt.Font.getFamily(Font.java:1153)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.a(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.d(DashoA10*..)
at …Run Code Online (Sandbox Code Playgroud) 是否有在IntelliJ IDEA中定义默认JVM参数的选项?
例如,我想永远激活:
-ea -Dslf4j.detectLoggerNameMismatch=true在Eclipse中,可以在以下位置找到该选项:
我经历过
无处解释使用此标志的好处.
这是性能优势吗?如果是的话,是否会有一个粗略的定义,将会有多少性能优势?(我知道性能问题的答案完全取决于具体情况,但是如果有人报告这样做会带来好处,那就太好了).
我最近安装了一个新的JDK(1.7u9),我得到了一些非常奇怪VerifyError的东西.在一个帖子中,我发现如果我使用-XX:-UseSplitVerifier魔术开关进行编译,它可以帮助我.
我想要做的是在Jenkins中全局设置这个Java选项,但是没有找到它的任何配置.有人可以帮我解决这个问题吗?
我能够提出的最接近的事情是通过Maven设置参数,但是我必须为每个项目配置执行它 - 我想避免这种情况.
提前致谢.
我需要在使用Gradle构建时向我的jar添加默认JVM选项.从我得到的文档中我必须设置:
applicationDefaultJvmArgs = ["-Djavafx.embed.singleThread=true"]
Run Code Online (Sandbox Code Playgroud)
我没有太多使用Gradle的经验,编写build.gradle文件的开发人员写的不同于大多数网站提供的示例.
这是build.gradle:
apply plugin: 'java'
apply plugin: 'eclipse'
version = '0.1'
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.+'
compile 'placeholder'
}
task release(type: Jar) {
manifest {
attributes("Implementation-Title": "placeholder",
"Implementation-Version": version,
'Main-Class': 'placeholder.Application')
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}
Run Code Online (Sandbox Code Playgroud)
我不知道在哪里提出论点.我尝试将它们放在不同的位置,但我总是得到:
A problem occurred evaluating root project 'placeholder'.
> No such property: applicationDefaultJvmArgs for …Run Code Online (Sandbox Code Playgroud) java ×10
jvm-arguments ×10
jvm ×5
gradle ×2
jvm-hotspot ×2
aspectj ×1
build.gradle ×1
classpath ×1
heap ×1
jar ×1
java-17 ×1
jenkins ×1
maven ×1
performance ×1
solaris ×1