站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题J2SE:系统内存不足的问题

J2SE:系统内存不足的问题

摘要: J2SE:系统内存不足的问题

系统内存不足

系统内存不足
出现OutOfMemoryError或是观察到内存吃紧
操作系统本身的剩余内存
通过top或是vmstat观察
操作系统的swap区
Swap区太小可能导致编译jsp时报“Not enough space”的错
操作系统kernel参数中maxdsiz的大小
如果观测到数据库连接池里的连接泄漏,极可能是内存泄漏的先兆


系统内存不足
JVM的heap区大小
通过java命令行中的-Xms,-Xmx指定,建议最小值和最大值设成一样
可以通过weblogic console上server/monitor/performance来观察其使用情况
建议生产系统最少256M,一般情况下可以设置为系统剩余物理内存的80%
Heap size太大在一些jvm上会有问题
对于sun和hp的jvm,permanent size太小也会出OutOfMemoryError
在java命令行上加-XX:MaxPermSize=128m


系统内存不足
尽量减少内存消耗
Session中不要放大的数据,并尽量在不再需要的时候remove掉;如果可以调整session timeout到较小的值
避免在J2EE server端应用里边调用awt/swing作图
调整ejb的cache/pool设置


系统内存不足
内存泄漏
可以通过weblogic console来观察jvm的heap memory使用情况来获知是否有内存泄漏情况
采用第三方辅助工具来获取更详细信息
Jprobe/OptimizeIt
有可能是weblogic的bug,但绝大部分情况是由用户的应用引起的
最常见的代码问题是数据库连接没正常关闭
比较好的写法是:
Connection conn = null;
Statement stmt = null;
ResultSet rset= null;
try
{
conn = getConnection()…
}
catch(SQLException sqle)
{
}
finally
{
try{rset.close();}catch(Exception e){}
try{stmt.close();}catch(Exception e){}
try{conn.close();}catch(Exception e){}
}



↑返回目录
前一篇: J2SE:汉字编码问题
后一篇: J2SE:Java对各种文件的操作详解