JVM选项列表是否仍在任何地方维护?它似乎从甲骨文的网站上消失了,但幸运的是Wayback Machine有一个副本.
这个问题类似于:
jsf:绑定到UI中的inputtext的整数属性在提交时设置为零
但我对解决方案并不完全满意.上下文是相同的:我有一个需要Integer值的Web表单.如果文本框留空,我希望我的整数字段为'null',而EL解析器会自动将我的id字段设置为'0'.
我可以通过在本地Tomcat VM中设置JVM参数来解决问题:
-Dorg.apache.el.parser.COERCE_TO_ZERO = FALSE
但是,这对我们客户的机器不起作用.是否可以在"代码内"设置/更改此JVM参数.
更新:我发现这是请求,但如果其他人有任何其他解决方法,我也想听到.
https://issues.apache.org/bugzilla/show_bug.cgi?id=48813
更新2:我无法将值从"0"更改为"null",因为我的应用程序应将"0"视为实际ID.所以我需要在运行时知道id文本框是否为空.
Java 8在启动后为Metaspace预留了1G.这意味着最小元空间大小为1G.但我将MetaspaceSize设置为300米,将MaxMetaspaceSize设置为400米.为什么Java会保留更多,然后我允许?
Java版本
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
VM标志
$ jcmd 21689 VM.flags
21689:
-XX:CICompilerCount=3 -XX:ConcGCThreads=1 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=62914560 -XX:+ManagementServer -XX:MarkStackSize=4194304 -XX:MaxHeapSize=1006632960 -XX:MaxMetaspaceSize=399998976 -XX:MaxNewSize=603979776 -XX:MetaspaceSize=299999232 -XX:MinHeapDeltaBytes=1048576 -XX:NativeMemoryTracking=summary -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC
Run Code Online (Sandbox Code Playgroud)
NMT
[jetty9-proxy@bm01 bin]$ jcmd 21689 VM.native_memory
21689:
Native Memory Tracking:
Total: reserved=2769543KB, committed=1311159KB
- Class (reserved=1221904KB, committed=197904KB)
(classes #36543)
(malloc=3344KB #44041)
(mmap: reserved=1218560KB, committed=194560KB)
Run Code Online (Sandbox Code Playgroud)
就在开始之后
Total: reserved=2402748KB, committed=150796KB
- Class (reserved=1056956KB, committed=7868KB)
(classes #1300) …Run Code Online (Sandbox Code Playgroud) 我需要将一些JVM参数传递给运行Tomcat的JVM,以便我的应用程序可以接收它们.
我想按照本文中概述的过程来获取环境变量.
我该怎么做呢?
更新 抱歉这是在Windows下运行的(客户端服务器上我的Dev machine 2003上的7)
我正在尝试使用-Dsun.java2d.dpiaware=false参数运行Java应用程序,但没有任何反应.
我希望有一个模糊的用户界面,但图标和字体的大小正常,似乎这个标志不起作用.
我在Windows 8.1上使用JDK 1.8.0_45.
我发现了这个错误https://bugs.openjdk.java.net/browse/JDK-8080153但我不明白如何解决它.
最近我从官方网站安装了JDK 9和Apache Cassandra.但是现在当我在前台启动cassandra时,我得到了这样的信息:
apache-cassandra-3.11.1/bin$ ./cassandra -f
[0.000s][warning][gc] -Xloggc is deprecated. Will use -Xlog:gc:/home/mmatak/monero/apache-cassandra-3.11.1/logs/gc.log instead.
intx ThreadPriorityPolicy=42 is outside the allowed range [ 0 ... 1 ]
Improperly specified VM option 'ThreadPriorityPolicy=42'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
到目前为止,我没有找到任何解决方案.Java 9和Cassandra可能还不兼容吗?这也是提到的问题 - #CASSANDRA-13107
但我不知道如何"删除旗帜"?在哪里可以覆盖或删除此标志?
有很多JVM参数影响JVM的内存使用情况,如 -Xms, -Xmx, -Xns, -XX:MaxPermSize...
OutOfMemoryError,StackOverflowError...)?我找不到一个好的备忘单 - 让我们在这里创建一个.
众所周知,可以限制Java堆大小-Xmx<amount><unit>,其中unit数据量单位如Gigabyte,Megabyte等.我知道这-Xmx128M意味着128 Mebibytes(= 128*1024*1024字节).
但这是真的-Xmx100m
吗,也可以使用兆字节使用的十进制单位(这将是100*1000*1000字节)?
那么是否可以通过使用小写单位后缀k, m, g来代替K, M, G?来使用这个十进制单位?
我有一个使用Spring的JSF Web应用程序,我试图找到一种方法来引用applicationContext.xml中的JVM参数.我使用环境参数启动JVM(例如-Denv = development).我找到并尝试了一些不同的方法,包括:
<bean id="myBean" class="com.foo.bar.myClass">
<property name="environment">
<value>${environment}</value>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
但是,当在MyClass中调用setter方法时,将传递字符串"$ {environment}",而不是"development".我有一个使用System.getProperty()的工作,但是能够通过Spring设置这些值会更好,更清晰.有没有办法做到这一点?
编辑:之前我应该提到的是我使用JDBC连接从我的数据库加载属性.这似乎增加了复杂性,因为当我向配置添加属性占位符时,属性占位符将覆盖从数据库加载的属性.我不确定它是依赖于顺序还是其他东西.这就像我可以做其中一个,但不是两个.
编辑:我目前正在使用以下配置加载属性:
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc.mydb.myschema"/>
</bean>
<bean id="props" class="com.foo.bar.JdbcPropertiesFactoryBean">
<property name="jdbcTemplate">
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="myDataSource" />
</bean>
</property>
</bean>
<context:property-placeholder properties-ref="props" />
Run Code Online (Sandbox Code Playgroud) 我们都知道Java有一个缓存Integer(和其他一些类型)的数量在该范围内[-128, 127]被认为是"常用".
缓存的设计如下:
private static class IntegerCache {
static final int low = -128;
static final int high;
static final Integer cache[];
static {
// high value may be configured by property
int h = 127;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
if (integerCacheHighPropValue != null) {
try {
int i = parseInt(integerCacheHighPropValue);
i = Math.max(i, 127);
// Maximum array size is Integer.MAX_VALUE
h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
} catch( NumberFormatException nfe) {
// If the …Run Code Online (Sandbox Code Playgroud) jvm-arguments ×10
java ×7
jvm ×5
tomcat ×2
cassandra ×1
dpi-aware ×1
el ×1
heap ×1
java-8 ×1
java-9 ×1
jsf ×1
jvm-hotspot ×1
managed-bean ×1
memory ×1
spring ×1