//首先检查程序有没
有限入死循环
这个问题主要还是由这
个问题 java.lang.
OutOfMemor
yError: Java heap space 引起的。第一次出现这
样的的问题以后,引发
了其他的问题。在网上
一查可能是JAVA的
堆栈设置太小的原因。
跟据网上的答案大致有
这两种解决方法:
1、设置环境变量
解决方法:手动设置H
eap size
修改TOMCAT_H
OME/bin/ca
talina.sh
set JAVA_OPTS=
-Xms32m -Xmx512m
可以根据自己机器的内
存进行更改。
2、java -Xms32m -Xmx800m className
就是在执行JAVA类
文件时加上这个参数,
其中classNam
e是需要执行的确类名
。(包括包名)
这个解决问题了。而且
执行的速度比没有设置
的时候快很多。
如果在测试的时候可能
会用Eclispe 这时候就需要在Ecl
ipse ->run -arguments
中的VM arguments 中输入-Xms32m
-Xmx800m这个
参数就可以了。
后来在Eclilps
e中修改了启动参数,
在VM arguments 加入了-Xms32m
-Xmx800m,问
题解决。
一、java.lan
g.OutOfMem
oryError: PermGen space
PermGen space的全称是P
ermanent Generation
space,是指内存
的永久保存区域,
这块内存主要是被JV
M存放Class和M
eta信息的,Cla
ss在被Loader
时就会被放到Perm
Gen space中,
它和存放类实例(In
stance)的He
ap区域不同,GC(
Garbage Collection
)不会在主程序运行期
对
PermGen space进行清理,
所以如果你的应用中有
很多CLASS的话,
就很可能出现Perm
Gen space错误,
这种错误常见在web
服务器对JSP进行p
re compile的时候
。如果你的WEB APP下都用了大量的
第三方jar, 其大小
超过了jvm默认的大
小(4M)那么就会产
生此错误信息了。
解决方法: 手动设置MaxPer
mSize大小
修改TOMCAT_H
OME/bin/ca
talina.sh
在“echo "Using CATALINA_B
ASE: $CATALINA_
BASE"”上面加入
以下行:
JAVA_OPTS=
"-server -XX:PermSi
ze=64M -XX:MaxPer
mSize=128m
建议:将相同的第三方
jar文件移置到to
mcat/share
d/lib目录下,这
样可以达到减少jar
文档重复占用内存的目
的。
二、java.lan
g.OutOfMem
oryError: Java heap space
Heap size 设置
JVM堆的设置是指j
ava程序运行过程中
JVM可以调配使用的
内存空间的设置.JV
M在启动的时候会自动
设置Heap size的值,
其初始空间(即-Xm
s)是物理内存的1/
64,最大空间(-X
mx)是物理内存的1
/4。可以利用JVM
提供的-Xmn -Xms -Xmx等选项可
进行设置。Heap size 的大小是Young Generation
和Tenured Generaion 之和。
提示:在JVM中如果
98%的时间是用于G
C且可用的Heap size 不足2%的时候将抛出
此异常信息。
提示:Heap Size 最大不要超过可用物理
内存的80%,一般的
要将-Xms和-Xm
x选项设置为相同,而
-Xmn为1/4的-
Xmx值。
解决方法:手动设置H
eap size
修改TOMCAT_H
OME/bin/ca
talina.sh
在“echo "Using CATALINA_B
ASE: $CATALINA_
BASE"”上面加入
以下行:
JAVA_OPTS=
"-server -Xms800m -Xmx800m -XX:MaxNew
Size=256m"
三、实例,以下给出1
G内存环境下java
jvm 的参数设置参考:
JAVA_OPTS=
"-server -Xms800m -Xmx800m -XX:PermSi
ze=64M -XX:MaxNew
Size=256m -XX:MaxPer
mSize=128m
-Djava.awt
.headless=
true "
很大的web工程,用
tomcat默认分配
的内存空间无法启动,
如果不是在myecl
ipse中启动tom
cat可以对tomc
at这样设置:
TOMCAT_HOM
E\bin\cata
lina.bat 中添加这样一句话:
set JAVA_OPTS=
-Xmx1024M -Xms512M -XX:MaxPer
mSize=256m
如果要在myecli
pse中启动,上述的
修改就不起作用了,可
如下设置:
Myeclipse-
>preferenc
es->myecli
pse->serve
rs->tomcat
->tom cat×.×->JD
K面板中的
Optional Java VM arguments中
添加:-Xmx102
4M -Xms512M -XX:MaxPer
mSize=256m
海柳 烟嘴 正品
在myeclipse
中启动Tomcat时
,提示"ava.la
ng.OutOfMe
moryError:
Java heap space",解决办
法就是:
Myeclipse-
>preferenc
es->myecli
pse->serve
rs->tomcat
->tom cat×.×->JD
K面板中的
Optional Java VM arguments中
添加:-Xmx102
4M -Xms512M -XX:MaxPer
mSize=256m
//以上是转载
我遇到的错误是在my
eclipse中启动
Tomcat时,提示
"ava.lang.
OutOfMemor
yError: Java heap space"
以上三点我都试过了 就是不知道自己的代码
从哪里进入死循环 我运用的是strut
s,hibernat
e,spring
根据错误提示JSON
Write 找到自己项目下poj
o下hibernat
e的映射文件
eg:
有两张关联的表 生成两个相联的实体类
和映射文件 PersonInfo
mation和Sta
teOffice
因为映射文件和实体类
是从数据库表自动生成
的 所以都是自动生成双向
的关系
在PersonInf
omation中pr
ivate PersStateO
ffice persStateO
ffice;
并且在StateOf
fice中priva
te Set<PersPe
rsonInform
ation> persPerson
Informatio
ns = new HashSet<Pe
rsPersonIn
formation>
(
0);
所以在封装json数
据的时候就会出现死循
环现象 不断的从两个实体类中
封装 导致内存溢出
解决方案 1 取消StateOff
ice中的关联 2手动封装json数
据(为了不让查询数据
出现错误与冲突 我选择手动封装jso
n数据)
eg://获取任职类
型
public String loadOffice
Type() throws Exception {
PrintWrite
r out = response.g
etWriter()
;
typeOffice
List=offic
eTypeServi
ce.getOffi
ceType();
out.print(
"{typeOffi
ceList:[")
;
for(int i=0;i<type
OfficeList
.size();i+
+){
out.print(
"{typeOffi
ceId:'"+ty
peOfficeLi
st.get(i).
getTypeOff
iceId()+"'
,");
out.print(
"typeOffic
e:'"+typeO
fficeList.
get(i).get
TypeOffice
()+"'}");
if(i!=type
OfficeList
.size()-1)
{
out.print(
",");
}
}
out.print(
"]}");
return null;
}
这个问题主要还是由这
跟据网上的答案大致有
1、设置环境变量
解决方法:手动设置H
修改TOMCAT_H
set JAVA_OPTS=
可以根据自己机器的内
2、java -Xms32m -Xmx800m className
就是在执行JAVA类
这个解决问题了。而且
如果在测试的时候可能
后来在Eclilps
一、java.lan
PermGen space的全称是P
这块内存主要是被JV
它和存放类实例(In
PermGen space进行清理,
这种错误常见在web
超过了jvm默认的大
解决方法: 手动设置MaxPer
修改TOMCAT_H
在“echo "Using CATALINA_B
JAVA_OPTS=
建议:将相同的第三方
二、java.lan
Heap size 设置
JVM堆的设置是指j
其初始空间(即-Xm
进行设置。Heap size 的大小是Young Generation
提示:在JVM中如果
提示:Heap Size 最大不要超过可用物理
解决方法:手动设置H
修改TOMCAT_H
在“echo "Using CATALINA_B
JAVA_OPTS=
三、实例,以下给出1
JAVA_OPTS=
很大的web工程,用
TOMCAT_HOM
set JAVA_OPTS=
如果要在myecli
Myeclipse-
Optional Java VM arguments中
在myeclipse
Myeclipse-
Optional Java VM arguments中
//以上是转载
我遇到的错误是在my
以上三点我都试过了 就是不知道自己的代码
根据错误提示JSON
eg:
有两张关联的表 生成两个相联的实体类
因为映射文件和实体类
在PersonInf
并且在StateOf
0);
所以在封装json数
解决方案 1 取消StateOff
eg://获取任职类
public String loadOffice
PrintWrite
typeOffice
out.print(
for(int i=0;i<type
out.print(
out.print(
if(i!=type
out.print(
}
}
out.print(
return null;
}