lucene使用記憶體索引時一些問題OutOfMemoryError: Java heap space
我在做【檔案搜】網站用到的:
高速版:耗時 0.015s ,找到約 1000 個結果。
千萬份資料全部存到記憶體裡面。
模糊匹配搜尋,輸錯了一兩個字也沒事。
lucene全文檢索引擎,無需資料庫。
問題1 資料庫Table 'file' is marked as crashed and should be repaired
>>>資料庫的問題,修復一下就可以了。用phpMyAdmin工具,找到這個表,點操作,點修復。
問題2 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet springmvc threw exception
java.lang.OutOfMemoryError: Java heap space
>>>在Eclipse裡選:Window->Preference->Installed JREs->Edit(選中jre),
在Default VM Arguments裡輸入-Xms256m -Xmx1024m,表示最小記憶體256M,最大1G,然後執行就可以了。
----------------------Linux下修改TomcatJVM記憶體大小----------------------
要新增在tomcat 的bin 下catalina.sh 裡,位置cygwin=false前 。注意引號要帶上,紅色的為新新增的.
# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="
cygwin=false
----------------------windows下修改Tomcat JVM記憶體大小----------------------
情況一:解壓版本的Tomcat , 要通過startup.bat啟動tomcat才能載入配置
要新增在tomcat 的bin 下catalina.bat 裡
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%後面新增,紅色的為新新增的.
set JAVA_OPTS=-Xms512m -Xmx512m -XX:ParallelGCThreads=8 -XX:PermSize=128m -XX:MaxPermSize=256m
我改的是:set JAVA_OPTS=-Xms64m -Xmx1024m -XX:ParallelGCThreads=20 -XX:PermSize=64m -XX:MaxPermSize=1024m
執行提示PermSize MaxPermSize 被忽略了。不管它了。
406萬條資料,佔了1G記憶體。
----------------------eclispe下修改Tomcat JVM記憶體大小----------------------
找到eclispe 中window->preferences->Java->Installed JRE ,點選右側的Edit
按鈕,在編輯介面中的 “Default VM Arguments ”選項中,填入如下值即可。
-Xms256m -Xmx256m
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
-vmargs 說明後面是VM的引數,所以後面的其實都是JVM的引數了
-Xms128m JVM初始分配的堆記憶體
-Xmx512m JVM最大允許分配的堆記憶體,按需分配
-XX:PermSize=64M JVM初始分配的非堆記憶體
-XX:MaxPermSize=128M JVM最大允許分配的非堆記憶體,按需分配
參考:http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html
http://blog.chinaunix.net/uid-29632145-id-4697079.html