У меня есть Tomcat6, работающий на компьютере с Windows2003. Я развернул 2 приложения Grails на этом сервере и вскоре заметил, что после развертывания все происходит сбой с классической ошибкой PermGen.
java.lang.OutOfMemoryError: PermGen space
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
java.lang.ClassLoader.defineClass(ClassLoader.java:616)
org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.de
...
Поэтому я нашел общее решение этой проблемы: увеличение кучи и пространства permgen с помощью:
set CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"
Добавлено в C: \ apache-tomcat-6.0.26 \ bin \ catalina.bat. К сожалению, это не сработало, но проблема в том, что я не уверен, что Tomcat его подхватит. Я проверял различные журналы, но эти параметры никогда не распечатывались. Есть ли способ зарегистрировать их и убедиться, что Tomcat их прочитал?
РЕДАКТИРОВАТЬ: Я попытался добавить следующие параметры JVM с tomcat6w.exe:
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
И ничего не изменилось. Я получаю permGen через 2-3 минуты безотказной работы. Любая другая идея?
Приветствия!
Похоже, что wp_localize_script() кодирует кавычки. Поэтому я заменил " в JS:
gallery_data = image.data.replace(/"/g,'"');
см. json_encode()
например.
$matches = array(1=>array(0=>'foo'));
$js_data_array = array();
$js_data_array[] = array(
'href' =>$matches[1][0], //this is an image url
'title' =>'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
);
$js_data_array[] = array(
'href' =>$matches[1][0], //this is an image url
'title' =>'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
);
echo $json = json_encode($js_data_array);
prints
[{"href":"foo","title":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"},{"href":"foo","title":"Lorem ipsum dolor sit amet, consectetur adipiscing elit"}]