由于移动方面要求尽快切换魔幻话吧boss接口,这几天一直在忙着调试接口。前天在调试接口时,突然发现一个非常诡异的问题:程序启动后,通过ps
-ef|grep java
查看进程情况发现程序不是启动一个进程,而是12个。这让我有点迷糊,启动一个java程序,怎会会出现12个进程在运行呢?
由于接口中采用了多线程,所以,起初以为是多线程引起的,但是,程序中总共启动了3个线程,也没有启动这么多线程啊。改造程序后,重新编译、执行,查看进程情况仍然是多个进程。将接口程序进行多次修改,都未见效果,甚至最后只是运行简单的main方法,还是没有消除多个进程的现象(只是减少到9个了)。最后,自己单独写了一个最具有历史性和代表性的程序-HelloWorld.java
,编译、执行后,查看进程数为9个,此时已经排除JDK版本的原因、接口程序本身原因、不同操作系统原因、系统版本原因。
昨天用了一下午的时间没有整明白是怎么回事,今天下午和公司一同事说起此事,开始也是对它无从下手,感觉这现象实在是太诡异,让人百思不解。尝试了N种情况后,猜想是不是环境变量问题,于是就开始对环境变量展开搜查,最终在bash_profile文件设置中找到了凶手--export
LD_ASSUME_KERNEL=2.4.1,将这个内核设置去掉后,执行程序,再查看进程情况就正常了(只显示1个进程)。
经过测试后,该问题可以通过以下两种办法进行解决:
1、bash_profile中去掉LD_ASSUME_KERNEL
2、将LD_ASSUME_KERNEL设置成与本机系统版本相同的值(该值可以通过命令查看 uname -r )