我想在一台小服务器上运行一个小的(不是太多太多)守护进程,看一个目录添加到它的新文件(以及主程序中的任何目录),并调用另一个Clojure程序来处理那个新文件.
理想情况下,每个文件都会被添加到一个队列(由ref
Clojure中的一个列表?)中,主进程将以FIFO为基础处理队列中的那些文件.
我的问题是:有一个JVM一直在运行这个小程序太多资源吗?你有什么建议去做这个吗?
非常感谢你!
编辑:我应该问的另一个问题:我应该将它作为自己的实例运行(使用更少的内存)并让它在看到文件时启动新的JVM,或者在同一个JVM上运行将处理文件的Clojure代码?
只要它现在运行良好并且它没有内存泄漏,它应该没问题.
从守护术语我推测它是Unix的一个克隆,在这种情况下最好是由一个初始化脚本启动它,或者从rc.local的脚本.不幸的是,操作系统与操作系统的细节有所不同.
使用-Xmx = 64m或其他内容限制memry以确保在删除其余服务之前失败.玩一下这个数字,找到最低的可靠尺寸.
此外,由于clojures声名鹊起的是其处理并发它使一个很大的意义只在多线程上运行的所有功能,运行一个JVM的能力.产生新进程的开销已经很大,如果它是一个JVM需要JIT并加热其内存管理,那么加倍.在资源受限的机器上可能会造成问题.在资源丰富的机器上,这是一种浪费.
我总是发现JVM不是为了快速运行脚本而是再次退出.在我看来,实际上并不是针对该用例.