Существует хорошая реализация регистрации b-сплайна Rueckert et al (1999), доступной на matlab central , написанной Дирком-Яном Круном.
Я бы посоветовал вам использовать существующие реализации, подобные этой, поскольку написание классического алгоритма регистрации с нуля означает повторное изобретение колеса.
Следует отметить, что эта реализация регистрации b-сплайна ожидает грубые (например, жесткие или аффинные) предварительно зарегистрированные данные. Это не будет работать, если ссылка и цель, например, полностью по-разному масштабируется или сильно вращается и т. д. Предварительно зарегистрируйтесь.
Вы пробовали
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
?
Вместе с увеличением числа обычных подозреваемых ( -Xmx
, -Xms
, -XX: PermSize
и -XX: MaxPermSize
) это решило все проблемы PermGen на нашем производственном Tomcat Это произошло довольно скоро после развертывания приложения. Никогда не видел другого исключения OOM после этого. : -)
Мне лично нравится VisualVM. Вокруг существуют определенно более мощные инструменты, но у этого есть хорошее удобство использования к отношению мощностей.
Анализатор Памяти Eclipse является бесплатным инструментом, который, по крайней мере, так же хорош как Yourkit.
YourKit является хорошим инструментом, я раньше многократно диагностировал проблемы памяти. Это является коммерческим, но это имеет бесплатную пробную версию в наличии для одноразовой отладки.
Проблема, у Вас есть появление в разработке или производстве?
Если Вы находитесь в разработке, помните, что Grails постоянно перекомпилировал много аспектов Вашего приложения (не только Доменные изменения, но и изменения контроллера и другие классы также). У меня есть проблемы PermGen также, но большинство инициировано устойчивой перекомпиляцией файлов, я продолжаю работать. Можно выключить эту функцию
Если Вы работаете, то, очевидно, у Вас есть намного более критическая проблема. Проблемы памяти PermGen приписываются многим платформам, на которых Grails создается, включая Spring, Будьте в спящем режиме, и даже собственная JVM Sun. Вы могли попытаться настроить максимальный размер "кучи" для своего веб-контейнера (Tomcat или Причал).
Вы могли также попробовать другую реализацию JVM, как JRockit Oracle, который, как предполагается, значительно лучше в сборке "мусора" и других средствах эффективности. Я никогда не пробовал его сам, но так как я также посреди разработки и обширного проекта Grails, я могу делать покупки решения этих проблем сам.Удачи!
Если это происходит после Вас горячий, несколько раз повторно развертывают Ваше приложение, Вы можете быть затронуты этой ошибкой Grails. Tomcat FAQ также имеет несколько возможных причин для утечек PermGen.