软件包括
xmind
dbeaver
truestudio
eclipse
原因分析
在linux下,eclipse的图形界面实现主要是GTK,用到了org.eclipse.equinox.launcher.gtk.linux.x86_64这个模块。
但是这个模块在默认执行系统安装的gtk组件,目前我所遇到的情况是,一旦运行在gtk3的时候,生成的软件界面会不断闪烁,内存使用量不断增加(假设标准情况下是300M左右,内存使用量会逐渐增加到500M,甚至更高,比如xmind,直接占光内存)
可能是在使用GTK3的时候,有内存泄露的情况,更具体的原因,我没有找出来。
解决方法
和我的博客https://mp.csdn.net/postedit/78648658所使用的方法一致。
首先找到软件安装目录下的配置文件。
比如:
xmind的配置文件在/usr/share/xmind/XMind/XMind.ini
dbeaver的配置文件在/usr/share/dbeaver/dbeaver.ini
…
文件内容一般是
@user.home/.xmind/configuration
-data
@user.home/.xmind/workspace
-startup
/usr/share/xmind/plugins/org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
--launcher.library
/usr/share/xmind/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444
--launcher.defaultAction
openFile
--launcher.GTK_version
2
-eclipse.keyring
@user.home/.xmind/secure_storage_linux
-vmargs
-Dfile.encoding=UTF-8
注意看是否有这么一行
/usr/share/xmind/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.400.v20160518-1444 --launcher.defaultAction
如果里面存在org.eclipse.equinox.launcher.gtk.linux.x86_64
,这就意味着调用了GTK的库。我的修改方法会生效。
如同上面的代码所示范的,在配置文件中添加一行参数
--launcher.GTK_version
2
目的是强制指定使用的GTK版本为2
改成GTK2以后有缺点,就是鼠标的指针在单击以后有一定的卡顿感觉,这个在拖动窗口元素的时候能够感觉出来,其他时候,运行是完全正常的。
至少,窗口不再闪烁,也不会突然卡死。
如果没有org.eclipse.equinox.launcher.gtk.linux.x86_64
,我的方法不一定会奏效。如果有相关的解决办法,或者更底层的解决办法,请联系我。
解决方法补充
网上也有增加软件运行时虚拟机的内存大小的方法,现补充如下
同样是打开配置文件,在里面添加
-Xms64m
-Xmx1024m
-XX:PermSize=256M
-XX:MaxPermSize=1024M
这个大小自己随意设置,尽量大一些,多给jvm虚拟机一些内存,可以延迟卡死的时间。
对于我这种因为内存溢出,cpu占用高,这个方法完全没有效果。