java程序员Android开发经验谈

深入理解Java中的内存溢出

2017-09-05  本文已影响107人  六尺帐篷

内存溢出

程序运行过程中无法申请到足够的内存而导致的一种错误。

内存溢出的几种情况(OOM 异常)

OutOfMemoryError 异常:
除了程 序计数器外 , 虚拟机内 存的其他几 个运行时区 域都有发生OutOfMemoryError(OOM)异常的可能。

如 果 要 向 运 行 时 常 量 池 中 添 加 内 容 , 最 简 单 的 做 法 就 是 使 用
String.intern()这个 Native 方法。

该方法的作用是: 如果池中已经包含一个等于此 String 的字符串, 则返回代表池中这个字符串的 String 对象; 否则,将此 String 对象包含的字符串添加到常量池中, 并且返回此 String 对象的引用 。 由 于 常 量 池 分 配 在 方 法 区 内 , 我 们 可 以 通 过 -XX:PermSize 和-XX:MaxPermSize 限制方法区的大小, 从而间接限制其中常量池的容量。

导致内存溢出的原因

内存溢出的解决方法

基本上如果抛出 OutOfMemory 有两种原因: 1.内存泄露。 2.应用程序本身
就是需要这么多的内存。

上一篇下一篇

猜你喜欢

热点阅读