Volley内存溢出, Volley使用者快来看看,也许你也会遇到-CSDN论坛-CSDN.NET-中国最大的IT技术社区

分享到
  • 一键分享
  • QQ空间
  • 新浪微博
  • 百度云收藏
  • 人人网
  • 腾讯微博
  • 百度相册
  • 开心网
  • 腾讯朋友
  • 百度贴吧
  • 豆瓣网
  • 搜狐微博
  • 百度新首页
  • QQ好友
  • 和讯微博
  • 更多...

百度分享

首页

精选版块

移动开发
iOS
Android
Qt
WP
云计算
IaaS
Pass/SaaS
分布式计算/Hadoop
Java技术
Java SE
Java Web 开发
Java EE
Java其他相关
.NET技术
.NET Framework
C#
.NET分析与设计
ASP .NET
VB .NET
Web开发
PHP
JavaScript
ASP
HTML(CSS)
HTML5
Apache
开发语言/框架
Delphi
VC/MFC
VB
C/C++
C++ Builder
其他开发语言
数据库开发
MS-SQL Server
Oracle
PowerBuilder
Informatica
其他数据库开发
硬件/嵌入式开发
嵌入开发(WinCE)
驱动开发/核心开发
硬件设计
单片机/工控
汇编语言
VxWorks开发
Linux/Unix社区
系统维护与使用区
应用程序开发区
内核源代码研究区
驱动程序开发区
CPU和硬件区

论坛帮助
论坛牛人
论坛地图
专家问答

body { margin: 0px; padding: 0px }
.bbs_top_ad { clear: both; text-align: left; display: block; width: 960px; margin: 2px 0; padding: 2px 9px; border: solid 1px #a9cbee; color: #000; list-style: none; font-size: 12px; line-height: 20px }
.bbs_top_ad::after { content: "."; display: block; height: 0; clear: both; visibility: hidden }
.bbs_top_ad a { color: #666; text-decoration: none }
.bbs_top_ad a:hover { text-decoration: underline }
.bbs_top_ad * { margin: 0; padding: 0; list-style: none }
.bbs_top_ad h3 { width: 330px; max-width: 330px; height: 20px; overflow: hidden; white-space: nowrap; font-size: 14px; line-height: 20px }
.bbs_top_ad h3::after { content: "..." }
.bbs_top_ad h3 a { color: #000 }
.bbs_top_ad .area_1 li,.bbs_top_ad .area_2 li { padding: 0 0 0 9px; background: url("http://c.csdnimg.cn/www/images/point_1.gif") no-repeat left 8px; width: 340px; height: 20px; overflow: hidden; display: inline-block }
.bbs_top_ad .area_1 { float: left; width: 350px; overflow: hidden; margin: 0 10px 0 0; padding: 4px 0 }
.bbs_top_ad .area_2 { position: relative; float: left; width: 355px; overflow: hidden; margin: 0 20px 0 0; padding: 4px 0 }
.bbs_top_ad .area_2 ul { height: 80px; overflow: hidden }
.area_1 ul { height: 40px; overflow: hidden }
#scrollDiv li { display: inherit; width: 200px }
#scrollDiv2 li { background: url("http://c.csdnimg.cn/www/images/point_pin.gif") no-repeat left 4px }
.bbs_top_ad #btn1 { float: left; width: 15px; height: 15px; border: none; background: #5d5d5d; color: #fff; font-size: 12px; line-height: 15px; cursor: pointer }
.bbs_top_ad #btn2 { float: left; margin-left: 10px; width: 15px; height: 15px; border: none; background: #5d5d5d; color: #fff; font-size: 12px; line-height: 15px; cursor: pointer }
.bbs_top_ad .area_3 { float: left; width: 220px; overflow: hidden; padding: 4px 0 0 0 }
.bbs_top_ad .area_3 a { color: #000 }
.bbs_top_ad .area_3 dt { margin-bottom: 5px }
.bbs_top_ad .area_3 dd { width: 193px; height: 20px; overflow: hidden; white-space: nowrap; padding: 0 0 0 17px; background: url("http://c.csdnimg.cn/www/images/point_huo.gif") no-repeat left 3px }
.bbs_top_ad .area_1 h3 li,.bbs_top_ad .area_2 h3 li { list-style: none; background: none; padding: 0 }

  • 大数据驱动下的微博社会化推荐
  • <<
    >>

    屌丝逆袭?舍我其谁!

    CSDN >
    CSDN论坛 >
    移动开发 >
    Android

    返回列表

    • 管理菜单

      • 置顶
      • 推荐
      • 锁定
      • 移动
      • 编辑
      • 删除
      • 帖子加分
      • 帖子高亮
    • 结帖
    • 发帖
    • 回复
    • 关注

    u012230445

    Volley内存溢出, Volley使用者快来看看,也许你也会遇到

    [问题点数:40分,结帖人u012230445]

    快速回复
    只显示楼主
    关注帖子

    Volley内存溢出, Volley使用者快来看看,也许你也会遇到

    [问题点数:40分,结帖人u012230445]

    不显示删除回复
    显示所有回复
    显示星级回复
    显示得分回复
    只显示楼主

    收藏

    取消关注
    关注
    u012230445

    红丨发
    本版等级:

    本版专家分:0

    结帖率:100%


    楼主

    发表于:
    2015-09-25 09:30:49

    内存溢出
    java

    这几天发现Volley的网络请求有内存溢出现象。(检测工具是MAT,LeakCanary)

    感觉现象很常见,也许大家还没发现,或着已经解决。

    Java code

    ?


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    public class HeapTestActivity extends Activity {

        TextView heapText;

        /** Volley框架的请求队列 **/

        public RequestQueue mRequestQueue ;

        @Override

        protected void onCreate(Bundle savedInstanceState) {

            // TODO Auto-generated method stub

            super.onCreate(savedInstanceState);

            setContentView(R.layout.heap_test);

            mRequestQueue= Volley.newRequestQueue(this);

            heapText=(TextView)findViewById(R.id.heapText);

            getData();

        }

        String url="http://route.showapi.com/341-2";//笑话大全的API接口

        HashMap<String, String> postMap;

        public void getData() {

            postMap = new HashMap<>();

            postMap.put("showapi_appid""10073");

            postMap.put("showapi_sign""8131cde1a4234008b25f2450e515607c");

            postMap.put("showapi_timestamp", DateUtil.getOrderNum());

            StringRequest arrayPostRequest = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() {

                @Override

                public void onResponse(String response) {

                    //请求成功

                    heapText.setText(response);

                }

            }, new Response.ErrorListener() {

                @Override

                public void onErrorResponse(VolleyError error) {

                    //请求错误

                }

            }) {

                @Override

                protected Map<String, String> getParams() {

                    return postMap;

                }

            };

            arrayPostRequest.setTag("StringRequest");

            mRequestQueue.add(arrayPostRequest);

        }

        @Override

        protected void onDestroy() {

            // TODO Auto-generated method stub

            super.onDestroy();

            mRequestQueue.cancelAll(this);

        }

    }

    此代码大家可以直接COPY就能运行。

    LeakCanary显示:StringRequest的参数,有个匿名内部类监听一直持有HeapTestActivity 这个对象,导致无法释放。

    MAT显示如下图:

    更多
    0

    分享到:

    相关知识库:
    JavaScript
    Java EE
    Java SE
    Java Web

    相关推荐:

    .adtxt { text-align: center }
    .adtxt ul { margin: 5px 0; border-top: 1px solid #B9B9B9; border-bottom: 1px solid #B9B9B9; background-color: #F2F6FB; padding: 5px 0 }
    .adtxt ul li { display: inline-block; font-size: 12px }
    .adtxt ul li a { color: #333 }

    对我有用[0]
    丢个板砖[0]
    引用 |
    举报 |

    编辑
    删除

    管理

    回复次数:3

    取消关注
    关注
    u010646258

    qianchao_3
    本版等级:

    本版专家分:0

    结帖率:0%

    #1
    得分:0

    回复于:
    2015-09-30 15:47:36

    整个项目中用一个RequestQueue ,可以弄成单例模式。官网上有写,然后创建RequestQueue 的时候用Application的context。If your application makes constant use of the network, it‘s probably most efficient to set up a single instance of RequestQueue that will last the lifetime of your app. You can achieve this in various ways. The recommended approach is to implement a singleton class that encapsulates RequestQueue and other Volley functionality. Another approach is to subclass Application and set up the RequestQueue in Application.onCreate(). But this approach is discouraged; a static singleton can provide the same functionality in a more modular way.

    A key concept is that the RequestQueue must be instantiated with the Application context, not an Activity context. This ensures that the RequestQueue will last for the lifetime of your app, instead of being recreated every time the activity is recreated (for example, when the user rotates the device).

    对我有用[0]
    丢个板砖[0]
    引用 |
    举报 |

    编辑
    删除

    管理

    取消关注
    关注
    u011774151

    爽-歪-歪
    本版等级:

    本版专家分:58

    结帖率:0%

    #2
    得分:0

    回复于:
    2015-10-02 19:53:37

    楼上正角,必须只持有一个RequestQueue

    对我有用[0]
    丢个板砖[0]
    引用 |
    举报 |

    编辑
    删除

    管理

    取消关注
    关注
    RunningShadow...

    RunningShadow_007
    本版等级:

    本版专家分:135

    结帖率:83.33%

    #3
    得分:40

    回复于:
    2015-10-04 15:34:12

    使用单例模式,下面是google官方给的example

    Java code

    ?


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    public class MySingleton {

        private static MySingleton mInstance;

        private RequestQueue mRequestQueue;

        private ImageLoader mImageLoader;

        private static Context mCtx;

        private MySingleton(Context context) {

            mCtx = context;

            mRequestQueue = getRequestQueue();

            mImageLoader = new ImageLoader(mRequestQueue,

                    new ImageLoader.ImageCache() {

                private final LruCache<String, Bitmap>

                        cache = new LruCache<String, Bitmap>(20);

                @Override

                public Bitmap getBitmap(String url) {

                    return cache.get(url);

                }

                @Override

                public void putBitmap(String url, Bitmap bitmap) {

                    cache.put(url, bitmap);

                }

            });

        }

        public static synchronized MySingleton getInstance(Context context) {

            if (mInstance == null) {

                mInstance = new MySingleton(context);

            }

            return mInstance;

        }

        public RequestQueue getRequestQueue() {

            if (mRequestQueue == null) {

                // getApplicationContext() is key, it keeps you from leaking the

                // Activity or BroadcastReceiver if someone passes one in.

                mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());

            }

            return mRequestQueue;

        }

        public <T> void addToRequestQueue(Request<T> req) {

            getRequestQueue().add(req);

        }

        public ImageLoader getImageLoader() {

            return mImageLoader;

        }

    }

    Here are some examples of performing RequestQueue operations using the singleton class:

    // Get a RequestQueue

    RequestQueue queue = MySingleton.getInstance(this.getApplicationContext()).

        getRequestQueue();

    // ...

    // Add a request (in this example, called stringRequest) to your RequestQueue.

    MySingleton.getInstance(this).addToRequestQueue(stringRequest);

    对我有用[0]
    丢个板砖[0]
    引用 |
    举报 |

    编辑
    删除

    管理

    返回列表

    • 管理菜单

      • 置顶
      • 推荐
      • 锁定
      • 移动
      • 编辑
      • 删除
      • 帖子加分
      • 帖子高亮
    • 结帖
    • 发帖
    • 回复
    • 关注

    回复内容
      移动客户端回帖所得专家分翻倍,下载体验!

    • 粗体
    • 斜体
    • 下划线
    • ---------------
    • 字体大小
      • 12px
      • 13px
      • 14px
      • 16px
      • 18px
      • 24px
    • 字体颜色
      • 黑色
      • 褐色
      • 橄榄色
      • 深绿
      • 深青
      • 深蓝
      • 靛蓝
      • 灰色-80%
      • 深红
      • 橙色
      • 深黄
      • 绿色
      • 绿色
      • 蓝色
      • 蓝-灰
      • 灰色-50%
      • 红色
      • 浅橙
      • 酸橙
      • 海绿
      • 水绿色
      • 浅蓝
      • 紫罗兰
      • 灰色-40%
      • 粉红
      • 金色
      • 黄色
      • 鲜绿
      • 青绿
      • 天蓝
      • 梅红
      • 灰色-25%
      • 玖瑰红
      • 茶色
      • 浅黄
      • 浅绿
      • 浅青绿
      • 淡蓝
      • 淡紫
      • 白色
    • ---------------
    • 图片
    • 链接
    • ---------------
    • 左对齐
    • 居中对齐
    • 右对齐
    • ---------------
    • 引用
    • 代码
      • C#
      • C/C++
      • CSS
      • Delphi/Pascal
      • JavaScript
      • Java
      • Objective C
      • Perl
      • PHP
      • Python
      • Ruby
      • SQL
      • Visual Basic
      • HTML
      • 其他
    • ---------------
    • QQ
      • monkey
        • onion
          • ---------------
          • 押宝
          • ---------------
          • 清除格式

          每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
          你还可以输入10000个字符

          (Ctrl+Enter)

          1. 请遵守CSDN用户行为准则,不得违反国家法律法规。
          2. 转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

          #popup_mask { position: absolute; width: 100%; height: 100%; background: #000; z-index: 9999; left: 0px; top: 0px; opacity: 0.3; display: none }

          公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈
          网站客服杂志客服微博客服[email protected]400-600-2320|北京创新乐知信息技术有限公司 版权所有|江苏乐知网络技术有限公司 提供商务支持
          京 ICP 证 09002463 号|Copyright ? 1999-2016, CSDN.NET, All Rights Reserved 

          您有2条新通知

          提问

          您的问题将会被发布在“技术问答”频道×

          该问题已存在,请勿重复提问

          插入链接

          本地上传网络图片

          插入图片

          ||||||

            

          000:0

          推荐标签:

          我要悬赏 币

          取消发布

          可能存在类似的问题:

          我想提一个新问题

          null

          时间: 2024-10-05 21:10:34

          Volley内存溢出, Volley使用者快来看看,也许你也会遇到-CSDN论坛-CSDN.NET-中国最大的IT技术社区的相关文章

          关于内存溢出的一些想法(Android)

          Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析 关于内存溢出的一些想法(Android) http://m.oschina.net/blog/54936 1. 能用 Application  的 上下文 就用. 因为如果用 Activity 的 Context ,如果用太多的 Activity, 如果 有些资源 还在引用 Activity的context的资源,会导致 这个 Activity 没有被回收,有可能导致 oom. 2. bitmap 回

          JVM——Memory Analyzor分析内存溢出

          前言 在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果.在本文中,将介绍MAT如何根据heap dump分析泄漏根源.由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三.一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defineClass方法告诉系统把内存镜像处理成合法的字节码.Java提供了抽象类ClassLoader,所有用户自定义类

          spark 内存溢出处理

          简介 Spark中的OOM问题不外乎以下两种情况 map执行中内存溢出 shuffle后内存溢出 map执行中内存溢出代表了所有map类型的操作.包括:flatMap,filter,mapPatitions等. shuffle后内存溢出的shuffle操作包括join,reduceByKey,repartition等操作. 后面先总结一下我对Spark内存模型的理解,再总结各种OOM的情况相对应的解决办法和性能优化方面的总结.如果理解有错,希望在评论中指出. Spark 内存模型 Spark在一

          Java虚拟机6:内存溢出和内存泄露、并行和并发、Minor GC和Full GC、Client模式和Server模式的区别

          http://www.cnblogs.com/xrq730/p/4839245.html 前言 之前的文章尤其是讲解GC的时候提到了很多的概念,比如内存溢出和内存泄露.并行与并发.Client模式和Server模式.Minor GC和Full GC,本文详细讲解下这些概念的区别. 内存溢出和内存泄露的区别 1.内存溢出 内存溢出指的是程序在申请内存的时候,没有足够大的空间可以分配了. 2.内存泄露 内存泄露指的是程序在申请内存之后,没有办法释放掉已经申请到内存,它始终占用着内存,即被分配的对象可

          Tomcat中JVM内存溢出及合理配置

          Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍. 一.Java JVM内存介绍 JVM管理两种类型的内存,堆和非堆.按照官方的说法:"Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.""在JVM中堆之外的内存称为非堆内存(Non-heap

          Tomcat常见的内存溢出,以及解决方法

          一.常见的三种内存溢出错误: 1.java.lang.OutOfMemoryError:java heap space    ====JVM Heap(堆)溢出 JVM再启动的时候回自动设置JVM Heap的值,其初始化空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存. 可以利用JVM提供的-Xmn -Xms -Xmx等选项进行设置. Heap的大小是Young Genration和Tenured Generaion之和. 在JVM中如果98%的时间是用于GC,且可用

          内存溢出异常

          Java堆 存储对象实例,我们只要不断创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,就会在对象达到最大堆容量限制后产生内存溢出异常. java.lang.OutOfMemoryError:Java heap space. 原因分析:确认内存中对象是否是必要的.也就是首先要分清楚到底是出现了内存泄露还是内存溢出. 内存映像分析工具,检查是否是内存泄露,还是内存溢出. 2.4.2 虚拟机栈和本地方法栈溢出 本地变量表.StackOverflowError异常.

          应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)

          http://www.educity.cn/wenda/351088.html 使用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space) 都说内存泄漏是C++的通病,内存溢出是Java的硬伤,这个头疼的问题算是让我给碰到了.我在做的这个功能涉及到修改word文档,因为微软没有公开word源代码,所以直接用java流来读取word的后果是读出来的会是乱码,经过查资料得知可以使用poi和jacob来操作word,jacob使用

          内存溢出的解决思路

              内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存. 引起内存溢出的原因有很多种,常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收: 3.代码中存在死循环或循环产生过多重复的对象实体: 4.使用的第三方软件中的BUG: 5.启动参数内存值设定的过小: 内存溢出的解决方案:第一步,修改JVM启动参数,直接增加内存.(-Xms,-Xmx