Kettle 7.1.0.0-12 安裝版無法啟動的問題
1.Kettle無法啟動解決方法:
只要修改一下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真的啟動成功了!
修改JAVA_HOME標識:
“_PENTAHO_JAVA_HOME” 替換為 “JAVA_HOME”
2.Kettle無法啟動原因分析:
主要有兩種原因:
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最大允許分配的非堆記憶體,按需分配