我正在尝试通过批处理文件为不同的文件运行标记器。这是我的代码:
String runap1="cd spt1"+"\n"+"java -Xss8192K -Xms128m -Xmx640m -classpath stanford-postagger.jar edu.stanford.nlp.tagger.maxent.MaxentTagger -model models/bidirectional-wsj-0-18.tagger -textFile "+fff[g]+">tag\\"+r1+"\nexit" ;
FileWriter fw1 = new FileWriter("ac.bat");
BufferedWriter bw1 = new BufferedWriter(fw1);
bw1.write(runap1);
bw1.close();
Runtime rx = Runtime.getRuntime();
Process p = null;
try {
p = rx.exec("cmd.exe /c start ac.bat");
} catch(Exception e) {
System.out.println("Error");
} // TODO
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
System.out.println("Thread interrupted");
}
这需要很长时间才能处理,我的电脑会挂起几次。我想为标记器创建一个共享内存,只加载一次 所有批处理文件都将使用该共享标记器;他们不应该每次加载标记器。 我怎么能这样做?
答案 0 :(得分:1)
如果将数据存储在内存映射文件中,则可以跨进程多次加载数据而无需其他副本。您甚至可以在一个流程中进行更改,而不是在另一个流程中进行更改。
这个问题是你必须处理堆内存。如果数据文件已经是您可以使用的二进制形式,则这种方法最简单。即你不需要解析它。