java --内存溢出的问题
来源:互联网 发布:1688一键传淘宝教程 编辑:程序博客网 时间:2024/05/17 10:56
java 的内存溢出是一个非常恼人的问题,简要说说自己的理解。
为什么内存溢出不容易发现?
内存空间是有限的:
- 你需要了解一下java的内存模型。
- 事实上,电脑的内存是十分有限的,算上硬盘也不能无限量。所以java本身得到的内存可能也只是电脑内存的一部分。
- 可能java做的稍微灵活一些,并不是分配固定的内存。而是可以动态变化的。
- 但是操作体统不允许一个进程所占用的资源无限制的增长下去,java的内存分配需要有一个最大值。
- 分配内存有限是造成内存溢出客观的原因。
不易定位:
- 这里拿堆内存来举例。(堆区域用来存放Class的实例(即对象),对象需要存储的内容主要是非静态属性。)
- 当你new 出某个对象时,可能突然就会爆发 outofmemory。是因为你的这条new 语句存在错误吗?
- 不一定,内存溢出时,所爆出的停止的点,不一定是真正存在问题的点,它只是一个触发点。之所以,在此处出问题,是因为在此语句之前,存在某种不合理的引用等等,导致了占据了大量的空间。
- 所以当出现这类问题时,你不能根据异常信息迅速定位到出问题的位置。
- 但是你可以做的是,从这点出发,找与之相关的涉及堆内存使用的环节。(往往会浪费大量时间)
出现内存溢出时处理办法:
- 根据上面的分析,大概可以得到两种较大的办法。
- 是java 虚拟机分配的问题,而程序并没有什么问题。(针对这一点你只需要调节java虚拟机相关的参数即可,这里不在赘述)
- 另一个方面是程序本身就存在的问题。不合理的程序结构,造成了这个问题,使得程序中相关变量等预期的生命周期远远小于在java内存机制下的生命周期。
- 程序本身常见问题,往往出现在循环处,链表处等等。
- 在不合理的程序中,内存的使用量,是随着循环的次数增加,而增量增长的。(不断在上升,每次循环都有一些东西无法释放掉)
0 0
- JAVA内存溢出的问题
- java --内存溢出的问题
- Java内存溢出问题
- java内存溢出问题
- java内存溢出问题
- java内存溢出问题
- java内存溢出问题
- JAVA程序内存溢出问题的分析
- JAVA程序内存溢出问题的分析
- 内存溢出的问题
- java内存溢出相关问题
- 关于JAVA内存溢出问题
- 有关java内存溢出问题
- Java内存溢出相关问题
- 关于java内存溢出问题
- java内存溢出问题排查
- 关于JAVA内存溢出问题
- Java JVM:内存溢出问题
- [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]
- TableView的相关设置
- UVALive 7261 A - Xiongnu's Land
- 按钮简单选择器
- 如何让div中的文字居中
- java --内存溢出的问题
- apache 问题 You don't have permission to access /test.php on this server 解决方法
- 代码审计的艺术系列—第二篇
- 对linux下mv、chmod命令基本功能的实现
- POJ 2653 Pick-up sticks [线段相交]【计算几何】
- Java的基础知识1
- 第一次的给codeforce
- android一个LinearLayout中具有几个控件,想要使那几个控件在LinearLayout被点击时,有颜色变化
- Android通过请求网络数据实现ListView,ListView的优化、图片的缓存、子控件的点击事件。