【发布时间】:2010-12-23 21:36:17
【问题描述】:
最近我创建了一个基于maven的web项目,并使用tomcat作为应用服务器来调试...
但是直接从项目上下文菜单运行应用程序后,tomcat 经常死机(pergem 错误意味着内存不足)。
最糟糕的是它创建了许多空闲线程并且它们都不能被手动杀死。
而且tomcat的状态也不能被NetBeans检测到,不能停止和重启。 我必须重新启动系统才能清理它们。
我的系统是 Fedora 12 x86... Java 版本为 SUN JDK 6 update 17。 NetBeans 版本是 6.7.1。
我试图为此创建一个错误,但 NetBeans 开发人员拒绝了它......我很惊讶这是使用 NetBeans 开发 Web 应用程序的一大障碍。
今天我在最新的NetBeans 6.8rc1中使用了JBoss 5.1,也遇到了同样的问题... 我已经尝试调整 VM 参数并分配更多内存但没有效果。
我已经通过 seam ant build script 将几个 seam 示例部署到 JBoss 5.1,没有问题。 但是我改用 NetBeans 来执行此操作,由于内存不足而失败。
怎么了????
【问题讨论】:
-
您尝试调整VM参数,但成功了吗?尝试调用Runtime.getRuntime().maxMemory(),看看你的设置有没有考虑到
-
检查 JRebel 是否支持您当前的配置,也许它可以解决您的问题:zeroturnaround.com/jrebel
-
Runtime.getRuntime().maxMemory() 在这里不相关。 PermGen 空间用于保存不太可能被 GC 处理的代码和相关数据。 Web 容器在开发条件下反复取消部署和重新部署是一种特殊情况,因此您要么需要分配更多的 PermGen(特别是!),要么需要启用类的 GC。
标签: java tomcat netbeans permgen