執行spoon.bat時Kettle無法啟動問題解決

weixin_34007291發表於2016-10-26

炒一下冷飯。

昨天寫了開源ETL工具Kettle安裝和配置筆記,按以上配置好後,雙擊啟動spoon.bat,但是bat視窗一閃就消失了,kettle沒任何反應,給我鬱悶壞了,經過一晚上百度和QQ,最後終於解決了。

1.Kettle無法啟動解決方法:

估計是jdk環境變數沒配置好,百度、qq找了很多地方,都不行,終於在一個部落格裡發現瞭解決方法:

只要修改一下spoon.bat裡記憶體配置:

if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms2058m" "-Xmx1024m" "-XX:MaxPermSize=256m"

改為

if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=256m"

修改之後儲存,重新啟動spoon.bat,奇蹟出現了,Kettle真的啟動成功了!

2.Kettle無法啟動原因分析:

在QQ群裡,有大神問:是否電腦硬體配置太低了?我:我的可是華碩i5CPU,4G大記憶體啊好不?大神:人家玩Kettle的都3位數記憶體哦,我:(⊙﹏⊙)b。。。

百度一下,還真是如此,理論上主要有兩種原因:

1) 引數中-Xms的值大於-Xmx,或者-XX:PermSize的值大於-XX:MaxPermSize;

2) -Xmx的值和-XX:MaxPermSize的總和超過了JVM記憶體的最大限制,比如當前作業系統最大記憶體限制,或者實際的實體記憶體等等。

看起來,是由於本機記憶體被佔用過多,而JVM引數設定過大,導致JVM無法啟動,故spoon.bat執行後,Kettle無法啟動啊,額,玩大資料分析還得要銀子換電腦嗎?

3.JVM(java虛擬機器)相關概念

在排查kettle問題時,用到了幾個概念,都貼在這裡吧。

1)堆(Heap)和非堆(Non-heap)記憶體

JVM主要管理兩種型別的記憶體:堆和非堆。

簡單來說堆就是Java程式碼可及的記憶體,是留給開發人員使用的;非堆就是JVM留給自己用的,

2)JVM的幾個引數:

-Xms2058mJVM初始分配的堆記憶體

-Xmx1024mJVM最大允許分配的堆記憶體,按需分配

-XX:PermSize=128MJVM初始分配的非堆記憶體

-XX:MaxPermSize=256MJVM最大允許分配的非堆記憶體,按需分配

3)Xms Xmx PermSize MaxPermSize 區別

相關文章