我正在尝试将8GB文件上传到weka以使用Apriori算法。服务器配置如下: - 它的8个处理器服务器在每个物理地址空间中有4个核心= 40位,虚拟地址空间= 48位。它是一个64位处理器。
物理内存= 26GB,SWAP = 27GB
JVM = 64位。我们使用XmX选项为JVM堆分配了32GB。我们担心的是,加载如此庞大的文件需要很长时间(大约8小时),java正在使用107%的CPU和91%的内存,并且没有显示内存不足异常,而weka正在显示从文件读取。
请帮助我如何处理大文件以及这里到底发生了什么?
Reagards, Aniket
答案 0 :(得分:0)
我不能和Weka说话,我不知道你的数据集,或者里面有多少元素。元素的数量与64b JVM一样重要,指针很大,而且它们相加。
但是不要创建大于物理RAM的JVM。 Swap根本不是Java的选项。交换JVM是一个死JVM。交换用于很少使用的空闲进程。
另请注意,Xmx值和物理堆大小不一样,物理大小总是大于Xmx大小。
您应该预先分配JVM堆(Xms == Xmx)并尝试各种值,直到消耗了物理RAM的MOST。这将限制完整的GC和内存碎片。如果你要分配总内存空间的很大一部分,它还可以帮助(一点点)在新系统上执行此操作。
但无论你做什么,都不要让Java交换。交换和垃圾收集器不混合。