java - 开发 Java Web 应用程序最有效的方法是什么?或者更具体地说,比如 Wicket 应用程序?

标签 java performance jvm hotswap hotdeploy

这是我第一次在这里发布问题,我会尽力让我的问题尽可能清楚。

我尝试寻找开发 Java Web 应用程序的最佳流程。经过几个月的反复试验,我的Web开发环境由以下部分组成:

框架:Apache Wicket 1.4.16
IDE:eclipse Galileo,带有 m2eclipse 插件
构建工具:Maven 2
数据访问:通过 JPA 2.0 的 EclipseLink 2.1.1(使用 StaticWeave)
RDBMS:带有 jTDS 的 MSSQL 2005 或更高版本
DI:Google Guice 2.0
开发 Web 容器:嵌入 Maven Jetty 插件的 Jetty 服务器。
目标Web容器:Tomcat 6.x或更高版本

我使用maven Jetty插件来测试运行我的web应用程序,在需要线路精确跟踪时启用JPDA。

每当对源代码进行更改时,我都必须重新加载我的应用程序才能生效。按 ENTER 重新加载是可以的,但是经过几次重新加载(大约 3~5 次取决于我的 PermGen 设置),抛出 OutOfMemoryException ,然后我必须关闭并再次启动我的应用程序。我知道自动重新加载可以通过配置来实现,但这只会导致 OOME 更快(由于过度重新加载)。

谷歌搜索后我意识到存在与一些内存泄漏问题相关的问题。我尝试过放大 MaxPermSize 设置,但我的设备上的 RAM 有限,并且设置为非常大的值是不合理的。顺便说一句,Tomcat 7 中引入了内存泄漏检测,我发现大多数内存泄漏都来自 jTDS、Google Guice 和 Wicket 本身,但我对此无能为力。

我可以做些什么来加速我的开发过程吗?为了减少重新加载时间,我应该转向更高级的 Web 容器,如 Glassfish(抱歉,我在这里买不起 WebLogic 或 WebSphere。)或其他东西。

预先感谢,欢迎任何意见!

最佳答案

我使用JRebel ,确实有很大帮助。我仍然需要时不时地重新启动服务器,但大多数更改都可以正常工作。它非常适合像 Wicket 这样以 Java 为中心的框架。您也可以尝试DCEVM ,如果您可以使用“破解”版本的 JDK 进行开发。

关于java - 开发 Java Web 应用程序最有效的方法是什么?或者更具体地说,比如 Wicket 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752968/

相关文章:

java - JVM是否因为networkaddress.cache.ttl设置而缓存url?

java - 在单次基准测试中刷新缓存行

java - 什么时候使用 JNA/JNI 从多个线程调用共享库是安全的?

java - 为 git 提交的代码构建 Maven

c# - 理解有漏洞的应用程序的 Performance Profiler 输出?

html - 如何测试 CSS 选择器性能?

java - Oracle JVM 运行时错误 : Provider com. sun.xml.stream.ZephyrParserFactory 未找到

java - 在java中设置字节值

java - 覆盖外部对象的方法

java - 删除冗余的 JUnit 测试套件测试