这是我第一次在这里发布问题,我会尽量让我的问题尽可能清楚。
我试图找到开发 Java webapps 的最佳流程。经过几个月的反复试验,我的 Web 开发环境由以下部分组成:
框架:Apache Wicket 1.4.16
IDE:eclipse Galileo,带有 m2eclipse 插件
构建工具:Maven 2
数据访问:EclipseLink 2.1.1 via JPA 2.0(带有 StaticWeave)
RDBMS:MSSQL 2005 或更高版本,带有 jTDS
DI:Google Guice 2.0
开发 Web 容器: 嵌入在 Maven Jetty 插件中的 Jetty 服务器。
目标 web 容器:Tomcat 6.x 或更高版本
我使用 maven Jetty 插件来测试运行我的 webapps,在需要行精度跟踪时启用 JPDA。
每当对源代码进行更改时,我都必须重新加载我的应用程序才能生效。按 ENTER 重新加载是可以的,但是在几次重新加载后(大约 3~5 取决于我的 PermGen 设置),抛出 OutOfMemoryException,然后我必须关闭并再次启动我的应用程序。我知道自动重新加载可以通过配置来实现,但它只会导致 OOME 更快(由于过度重新加载)。
谷歌搜索后,我意识到与一些内存泄漏问题有关。我已经尝试扩大 MaxPermSize 设置,但我的装备上的 RAM 是有限的,将其设置为非常大的东西是不合理的。顺便说一句,Tomcat 7 中引入了内存泄漏检测,我发现大多数内存泄漏来自 jTDS、Google Guice 和 Wicket 本身,但我对此无能为力。
我能做些什么来加速我的开发过程吗?为了减少重新加载时间,我应该转向更高级的 Web 容器,比如 Glassfish(抱歉,我买不起 WebLogic 或 WebSphere。)或其他任何东西。
在此先感谢,欢迎任何意见!