摘要:在有些場景為了安全考慮環(huán)境變量是被禁用的,比如系統(tǒng)中但有效用戶或組不是實際時則禁用此環(huán)境變量。
JAVA_TOOL_OPTIONS是何物
有些應(yīng)用不方便設(shè)置JVM參數(shù),如命令行應(yīng)用、通過JNI(Java Native Interface)API調(diào)用虛擬機的應(yīng)用、腳本嵌入虛擬機中的應(yīng)用等。這種情況環(huán)境變量JAVA_TOOL_OPTIONS就非常有用了,它會被JNI API的JNI_CreateJavaVM函數(shù)使用。
Note:
在有些場景為了安全考慮環(huán)境變量JAVA_TOOL_OPTIONS是被禁用的,比如Solaris系統(tǒng)中但有效用戶ID或組ID不是實際ID時則禁用此環(huán)境變量。
因為JAVA_TOOL_OPTIONS是被被JNI_CreateJavaVM調(diào)用的,顧名思義是創(chuàng)建VM,因此有些參數(shù)是不能被設(shè)置的如選擇虛擬機運行模式-client或-server。
各種OPTIONS的區(qū)別也許你經(jīng)常遇到JAVA_OPTS、_JAVA_OPTIONS和JAVA_TOOL_OPTIONS,那么他們有什么不同呢?
JAVA_OPTS:常用于一些應(yīng)用的配置,如Tomcat,但它一般不作為環(huán)境變量,也不能被JVM識別的,是那些應(yīng)用的自定義配置;
_JAVA_OPTIONS:也是作為環(huán)境變量來替代命令行參數(shù)的,但它是JVM廠家自定義的,可以覆蓋JAVA_TOOL_OPTIONS,但各廠家的不同,_JAVA_OPTIONS是Oracle的JVM,而IBM的則是用IBM_JAVA_OPTIONS。
JAVA_TOOL_OPTIONS:是標準的,所有虛擬機都能識別和應(yīng)用的。
如果想驗證上面的不同也不難,如果設(shè)置了JVM能識別的環(huán)境變量,JVM會有"Picked up"的提示的,如:
export JAVA_OPTS=zhaiqiafneng export JAVA_TOOL_OPTIONS="-Xmx512m -Xms64m" java -version
JVM會打印:
Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
可見JAVA_TOOL_OPTIONS能被JVM識別,而JAVA_OPTS不能被識別。
可以通過設(shè)置-Xmx的值觸發(fā)“Too small initial heap”異常連檢測覆蓋(當然你也可以通過其他方式):
export JAVA_TOOL_OPTIONS="-Xmx512m -Xms64m" export _JAVA_OPTIONS="-Xmx1k -Xms1k" java -version
JVM會打印
Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
Picked up _JAVA_OPTIONS: -Xmx1k -Xms1k
Error occurred during initialization of VM
Too small initial heap
可見_JAVA_OPTIONS覆蓋了JAVA_TOOL_OPTIONS.
解決的經(jīng)典問題JAVA_TOOL_OPTIONS用于解決的經(jīng)典問題是使用命令行導(dǎo)致中文亂碼,如:
........
/HController.java:181: error: unmappable character for encoding GBK// ???后的發(fā)??? ^/HController.java:181: error: unmappable character for encoding GBK
// ???后的發(fā)??? ^.......
通過設(shè)置環(huán)境變量JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"一般可以解決,如果不能解決,就要根據(jù)你具體的編碼來設(shè)置下就好。
更多原創(chuàng)文章可關(guān)注我的個人博客:宅前瘋 或微信公眾賬號:zhaiqianfeng
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66756.html
摘要:用于將集成至標準的構(gòu)建生命周期中,此時執(zhí)行時就會執(zhí)行指定的操作,從而實現(xiàn)自定義打包。插件的已棄用會自動執(zhí)行生命周期。可執(zhí)行文件執(zhí)行時出現(xiàn)亂碼使用生成的可執(zhí)行文件,在中執(zhí)行時出現(xiàn)亂碼,項目編碼統(tǒng)一為,日志使用框架。得到的是當前的絕對路徑。 「博客搬家」 原地址: 簡書 原發(fā)表時間: 2017-04-06 1. 設(shè)置 Java JDK 的版本為「JDK 1.8」 可以修改 pom.x...
摘要:正文執(zhí)行環(huán)境的理解執(zhí)行環(huán)境或者執(zhí)行上下文后面簡稱定義了變量或者函數(shù)有權(quán)訪問的其他數(shù)據(jù),決定了他們各自的行為。最后全局環(huán)境的變量對象總結(jié)活動對象和變量對象是執(zhí)行環(huán)境在不同生命期的不同叫法。未進入執(zhí)行階段之前,變量對象中的屬性都不能訪問。 背景 夯實基礎(chǔ)才是進步的根源,基礎(chǔ)不牢地動山搖!!于是乎,結(jié)合《javascript高級程序設(shè)計》來點基礎(chǔ)的學(xué)習(xí)和理解。本文主要會有兩部分。rt!! 正...
摘要:至此作用域鏈創(chuàng)建完畢。好了,通過深入理解作用域鏈,我們能跟好的理解的運行機制和閉包的原理。 前言 理解javascript中的作用域和作用域鏈對我們理解js這們語言。這次想深入的聊下關(guān)于js執(zhí)行的內(nèi)部機制,主要討論下,作用域,作用域鏈,閉包的概念。為了更好的理解這些東西,我模擬了當一個函數(shù)執(zhí)行時,js引擎做了哪些事情--那些我們看不見的動作。 關(guān)鍵詞: 執(zhí)行環(huán)境 作用域 作用域鏈 變...
閱讀 2430·2021-10-11 10:57
閱讀 1279·2021-10-09 09:59
閱讀 1998·2019-08-30 15:53
閱讀 3212·2019-08-30 15:53
閱讀 1008·2019-08-30 15:45
閱讀 738·2019-08-30 15:44
閱讀 3446·2019-08-30 14:24
閱讀 954·2019-08-30 14:21