Java 内存溢出分析
来源:互联网 发布:mac连接wifi共享热点 编辑:程序博客网 时间:2024/05/20 03:06
最近有同学叫我帮忙调试一个内存溢出的问题,根据分析调试发现只是java虚拟机堆配置太小了。
在平时开发时也经常会遇到内存溢出的问题,一般内存溢出分几种情况:
1,程序问题
很多时候写了死循环等低质量的问题,会引起内存溢出,这类内存溢出查起来比较头痛,第一可能代码写的比较隐蔽,第二可能这种情况要在多种条件组合情况下才能出现。也只能一条一条代码的去调试或者打印更多的日志文件进行跟踪了。
2,虚拟机配置问题
java内存分两种:
一种叫栈,给普通常量使用,
第二种叫堆,这种让new出来的对象使用。
在设置虚拟机内存的时候有两个内存可以设置:
第一个叫分配给虚拟机的内存,这个是全部划分给java使用的总内存
第二叫堆内存,对应上面的第二种情况,堆内存一般只有在一次性加载大对象的时候使用到,比如说new了一个特别大的数组,图片等或者说加
载一个很大的第三方jar包的时候,大到超出默认的堆大小就报内存溢出。
3,配置虚拟机内存
java虚拟机后面加上参数-Xms128m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m
分配跟虚拟机总内存:
-Xms128m 分配给虚拟机初始内存128m
-Xmx512m 分配给虚拟机最大内存512m
分配给堆内存:
-XX:PermSize=64m 分配给虚拟机堆内存最小64m
-XX:MaxPermSize=128m 分配给虚拟机堆内存最大128m
4,配置服务器内存
一般java应用在应用服务器上,所以只要配置应用服务器的参数就可以,例如tomcat(windows版本)的内存配置有以下几种:
1)免安装版tomcat,在%TOMCAT_HOME%/bin/catalina.bat中加入:
SET CATALINA_OPTS=-Xms128m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m;
这种启动配置只有在调用%TOMCAT_HOME%/bin/startup.bat文件才起作用
2)安装版tomcat,在服务管理里有一个服务叫tomcat,进注册表设置
C:/WINNT/system32/regedt32.exe,
在HKEY_LOCAL_MACHINE-->SOFTWARE-->Apache SoftwareFoundation-->Process Runner 1.0
-->Tomcat5-->Parameters修改属性:-Xms64m -Xmx128m
3)tomcat5.5后在启动控制台里也可以直接设置。
- Java 内存溢出分析
- 分析java内存溢出
- Java内存溢出分析
- java内存溢出分析
- Java内存溢出分析
- Java内存溢出分析
- java内存溢出分析
- JAVA 内存溢出 分析
- java内存溢出分析工具
- java内存溢出分析工具
- java 内存溢出分析方法
- java内存溢出分析方法
- JAVA程序内存溢出问题的分析
- JProfiler - JAVA内存溢出/CPU占用率分析
- Java内存溢出的分析和解决
- Java内存溢出异常的分析过程
- JAVA程序内存溢出问题的分析
- Java内存溢出错误:OutOfMemoryError异常分析
- js左右滚动实例(2009年8月11)
- 增加firefox的搜索选项
- 翻页之后,保存上页已选ChcekBox,然后一次性处理所选信息
- CListCtrl的使用说明
- 字节数组与int转换
- Java 内存溢出分析
- JavaMail 深入浅出
- return和System.out()的退出
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之33---WAP 调用BREW
- Flex 和 Flash 的区别
- spring依赖注入
- jQuery ajax 应用
- opengl渲染流程
- javascript 获取 checkbox 所选择行的值