【求助】Struts2项目的国际化,测试时堆内存溢出

learningBird 2012-12-24 10:26:23
最近需要将SSH框架的旧项目需要进行国际化,但又不想去修改类文件,所以直接将JSP页面里的 中文显示 全部替换成了
<s:text name="key">
的形式,之后在struts.xml 中配置好相应的*.properties 件并写好相应的key和value,如:

global.login=Login
globab.username=Username
。。。。

测试时,项目运行显示没问题,也可以进行中英文的交替显示,但是在进行压力测试时,就出现:

Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space

的异常。求助大家,知道要如何处理吗?

因为页面的中Struts标签过多以至多个用户同时访问时变量过多导致的吗?

直接使用struts2国际化标签好,还是自己写一个ResourceBundle处理类,再自己用EL表达式去获取相应的value好?
...全文
165 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
learningBird 2012-12-25
  • 打赏
  • 举报
回复
引用 10 楼 dracularking 的回复:
引用 9 楼 LearingBird 的回复:引用 7 楼 dracularking 的回复: 引用 4 楼 LearingBird 的回复:原项目的在压力测试下运行十分流畅,我只是将全部的中文显示改为Struts的text标签,这样会引起内存泄漏吗?要如何检查。实习生,不是很懂。。 压力测试是怎样的压力测试呢,会动态增加jvm的内存开销吗?如果是这种的才算。 ……
明白了,我查一下是哪里调用了这些方法。谢谢啦。增大jvm内存应该也可以,但是不是解决问题的根本。还是你给的解答比较好,分就给你啦。谢谢啦。
雍寇德 2012-12-25
  • 打赏
  • 举报
回复
增加JVM内存空间
dracularking 2012-12-25
  • 打赏
  • 举报
回复
引用 9 楼 LearingBird 的回复:
引用 7 楼 dracularking 的回复: 引用 4 楼 LearingBird 的回复:原项目的在压力测试下运行十分流畅,我只是将全部的中文显示改为Struts的text标签,这样会引起内存泄漏吗?要如何检查。实习生,不是很懂。。 压力测试是怎样的压力测试呢,会动态增加jvm的内存开销吗?如果是这种的才算。 改用了标签可能会增加内存开销,但增加量应该不会很大,这是一个疑点。 ……
这样会内存溢出就正常了 at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) 点击操作中包含括容方法,如果业务逻辑允许这样的话,无限执行,势必会out of memory
learningBird 2012-12-24
  • 打赏
  • 举报
回复
引用 3 楼 dracularking 的回复:
引用 2 楼 LearingBird 的回复:我现在就是直接引用struts2标签,结果堆内存溢出 不知如何解决。 引用 1 楼 Think_Java_1993 的回复: 个人感觉应该是国际化把 毕竟struts2人家给你国际化了啊 因为是servlet jsp的原因导致的out of memory, 查明如果不是因为内存泄漏引起的out of memory……
原项目的在压力测试下运行十分流畅,我只是将全部的中文显示改为Struts的text标签,这样会引起内存泄漏吗?要如何检查。实习生,不是很懂。。
dracularking 2012-12-24
  • 打赏
  • 举报
回复
引用 2 楼 LearingBird 的回复:
我现在就是直接引用struts2标签,结果堆内存溢出 不知如何解决。 引用 1 楼 Think_Java_1993 的回复: 个人感觉应该是国际化把 毕竟struts2人家给你国际化了啊
因为是servlet jsp的原因导致的out of memory, 查明如果不是因为内存泄漏引起的out of memory的话,就增加jvm内存
learningBird 2012-12-24
  • 打赏
  • 举报
回复
我现在就是直接引用struts2标签,结果堆内存溢出 不知如何解决。
引用 1 楼 Think_Java_1993 的回复:
个人感觉应该是国际化把 毕竟struts2人家给你国际化了啊
雍寇德 2012-12-24
  • 打赏
  • 举报
回复
个人感觉应该是国际化把 毕竟struts2人家给你国际化了啊
learningBird 2012-12-24
  • 打赏
  • 举报
回复
引用 7 楼 dracularking 的回复:
引用 4 楼 LearingBird 的回复:原项目的在压力测试下运行十分流畅,我只是将全部的中文显示改为Struts的text标签,这样会引起内存泄漏吗?要如何检查。实习生,不是很懂。。 压力测试是怎样的压力测试呢,会动态增加jvm的内存开销吗?如果是这种的才算。 改用了标签可能会增加内存开销,但增加量应该不会很大,这是一个疑点。 总的来说,内存泄漏的可……

2012-12-24 16:37:53 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space
2012-12-24 16:37:35 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:2882)
	at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
	at java.lang.StringBuilder.append(StringBuilder.java:119)
	at com.hgsoft.service.AdminService.getFunctions(AdminService.java:47)
......
手动测试了一下,从第一个功能到最后一个狂点狂点,就出现了以上的Exception..
learningBird 2012-12-24
  • 打赏
  • 举报
回复
引用 6 楼 Think_Java_1993 的回复:
虚拟机内存溢出 怎么会 这个问题 你是用了多少这种标签呢 国际化一般这种问题可能是JSP页面的问题 同上2L你试试加JVM的内存处理下
一个页面20个<s:text name="key"/>左右。我的环境: Win7 64位 4G,jvm 64位, -Xmx512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m -Dosgi.nls.warnings=ignore
dracularking 2012-12-24
  • 打赏
  • 举报
回复
引用 4 楼 LearingBird 的回复:
原项目的在压力测试下运行十分流畅,我只是将全部的中文显示改为Struts的text标签,这样会引起内存泄漏吗?要如何检查。实习生,不是很懂。。
压力测试是怎样的压力测试呢,会动态增加jvm的内存开销吗?如果是这种的才算。 改用了标签可能会增加内存开销,但增加量应该不会很大,这是一个疑点。 总的来说,内存泄漏的可能性较低,内存不足(排除泄漏之后)的可能性较高,就直接增加jvm内存试试(这个搜一下就有),看看还会不会出现这个out of memory问题。
雍寇德 2012-12-24
  • 打赏
  • 举报
回复
虚拟机内存溢出 怎么会 这个问题 你是用了多少这种标签呢 国际化一般这种问题可能是JSP页面的问题 同上2L你试试加JVM的内存处理下
笑莫问 2012-12-24
  • 打赏
  • 举报
回复
增加jvm内存 .

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧