Spoon软件运行时点击右键程序无响应的解决方法
问题描述
背景:Kettle8.2版本,可以正常启动,右键转换出现卡死,程序无响应问题
解决后效果图如下,未解决前对DB连接右键就会未响应
JDK版本不对
解决方法一:
查看JDK版本方法:WIN+R----->cmd----->java -version
修改本机JDK环境为1.8
因为运行Kettle 7.0以上版本JDK必须为1.8及以上(在多次实践中发现,JDK9和JDK10使用起来并不稳定,这里强烈推荐使用JDK1.8,否则在后期使用过程中会出现非常多莫名奇妙的错误)
解决方法二:
给Kettle 7.0 单独设置1.8环境
1.将jdk1.8放到Kettle 7.0 的根目录
2.用编辑器打开Kettle 根目录下的 spoon.bat
Linux下为spoon.sh
3.插入以下代码,重启Kettle
set JAVA_HOME=%cd%/jdk1.8.0_92
set PENTAHO_JAVA_HOME=%JAVA_HOME%
电脑硬件配置太低
修改一下spoon.bat
Linux下为spoon.sh
里内存配置:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"
改为
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=256m"
即修改-Xms
,-Xmx
值,修改之后保存,重新启动spoon.bat
总结
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
2) -Xmx的值和-XX:MaxPermSize的总和 超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。
看起来,是由于本机内存被占用过多,而JVM参数设置过大,导致JVM无法启动,故spoon.bat运行后,Kettle无法启动
JVM(java虚拟机)相关概念
1) 堆(Heap)和非堆(Non-heap)内存
JVM主要管理两种类型的内存: 堆和非堆。
简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,
2) JVM的几个参数:
-Xms2058m JVM初始分配的堆内存
-Xmx1024m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=128M JVM初始分配的非堆内存
-XX:MaxPermSize=256M JVM最大允许分配的非堆内存,按需分配
3) Xms Xmx PermSize MaxPermSize 区别
可参考该博主 @残星 博文:https://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html