使用64位VM而不是32位生成* .war文件有什么区别吗?
在使用我最近购买的新笔记本电脑部署应用程序后,我遇到了一个问题 - Windows 7和AMD 64位处理器。我没有触及任何应用程序源代码,但是当通过Eclipse / Galileo生成* .war然后将其部署到服务器中时,每当我试图显示任何内容时,我都会在运行时遇到“Permgen Space”异常报告 - 内置于Jasper报告 - 在服务器端,本地所有这些以及通过我的旧计算机(32位)1生成的旧* .war文件都正常工作。
关于方框的一些细节:
本地:
服务器端:
在这里您可以看到记录的异常:
javax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:295)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
br.com.innosoft.jzytho.framework.struts.action.AcessoAction.processActionPerform(AcessoAction.java:166)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
如果您需要更多详细信息,请与我们联系。
提前致谢。
答案 0 :(得分:2)
一般来说:不。
我使用完全相同的脚本通过生产为我们的应用程序构建战争。所有的生产服务器现在都是64位,但已经过去了32位。一些开发盒是64位,大约32位,但都使用相同的机制进行包装战争。
Permgen空间是与可用内存和类元数据相关的内存问题, 受处理器/ os体系结构的影响。
这是对此的讨论: Explaining java.lang.OutOfMemoryError: PermGen space
简短回答是在32位平台上启动jvm时添加一个jvm启动参数-XX:PermSize = 64m或--XX:PermSize = 128m。
答案 1 :(得分:1)
如果使用64位VM或32位生成WAR文件,则没有区别。 WAR基本上是ZIP文件格式。文件格式不随VM更改。