笔记:java、android网络交互频繁gc

2023-10-26

背景:纯手写没用三方异步方式网络通讯

现象:execute()之后log出现大量gc,内存总体没有多大变化,频繁出现的gc导致UI等待界面卡顿也着实吓了我一跳。。。

解决思路:

1.断点调试跟踪了一下发现是execute的问题,因为其他交互没有出现过只有某一交互出现,因此尝试更换了请求json来判断是否是某个地方写错了造成OOM等,结果更换其他json正常。

2.交互代码没有问题,断点跟踪没有继续往网络方面深入,手动查看了socket代码,考虑是接收(Read)部分创建了大量新生代造成频繁gc。(因为单单的网络交互不可能频繁gc)

3.多点log看出了问题。

原因:缓冲区太小,小量的json内存够用,当大量的json(比如list有上百个对象),就OOM只能频繁gc。

解决方式:若固定缓冲区的值太浪费内存,所以换成了BufferRead的readLine方式,效率提高百倍,很长的json只出现了一次gc。log的信息会断(不全),但是内存中是全的,显示出来就看到了。

反思:设计接口不要过长,可采用分页的方式获取;获取多用缓存;如果还设计到视频、图片展示之类的推荐直接用第三方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笔记:java、android网络交互频繁gc 的相关文章

  • 模仿 youtube/gmail 应用程序的导航抽屉

    背景 近几个月来 谷歌发布了Youtube 应用程序 http www androidpolice com 2013 08 19 breaking massive youtube for android v5 0 update brings
  • Android中如何通过ViewModel类在Activity和Fragment之间共享数据?

    我想知道是否可以传递一个在 Activity 类中声明的字符串数据 并将该字符串数据传递给 ViewModel 类 然后将数据传递给 Fragment 类 视图模型类 class TimeTableViewModel extends Vie
  • 使用holoeverywhere滑块插件时如何从活动中获取当前可见的片段?

    我想知道如何执行这些操作无处不在的全息 https github com Prototik HoloEverywhere 将滑块插件与 tabber 结合使用时 从活动中获取对当前可见和活动片段的引用 从活动 其他片段获取对 TabsTab
  • Android 从 C++ 端播放原始音频

    我需要能够在 Android 系统的 C 端以自定义文件格式传输音频 我正在致力于移植自定义媒体播放器 并且需要能够打开自定义文件并从中传输音频 这很重要 因为我认为从性能角度来看将整个播放器移植到 JAVA 是不可行的 并且通过 JNI
  • Android Studio Beta 频道、Android Studio Canary 频道、Android Studio Dev 频道有什么区别? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我是 android 新手 想知道要安装哪个 studio Android Studio Beta 频道 Android Studio Ca
  • android ndk 多点触控?

    我正在编写一个仅使用本机代码的应用程序 那么ndk中是否可以获取多点触控事件呢 我感觉我已经搜索了整个网络 但什么也没找到 有谁知道如何做到这一点 是的 您可以检查名为native activity查看如何获取输入事件 寻找engine h
  • 多种语言的多种字体

    我最近在开发应用程序时遇到了一种情况 我必须在文本视图中显示不同的语言 目前我正在展示一些使用字体 字体像这样 Typeface tf Typeface createFromAsset this getAssets DroidHindi t
  • 在android中从JSON生成listview

    我对 Android 完全陌生 目前正在尝试从从我的服务器中提取的 JSON 数组生成列表视图 我已经阅读了很多教程 但没有运气 有一种独特的方法可以做到这一点 请您指出一些适合开始的资源 我读过了this http www josecgo
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • 将 android 蓝牙客户端套接字连接到 ubuntu 服务器套接字时出现问题

    我正在编写一个 Android 应用程序 它应该通过蓝牙与服务器交换数据 服务器端位于运行 Ubuntu 的 PC 上 使用 bluez 库 用 C 或 C 编写 当我尝试连接到 PC 上的服务器套接字时 我的 Android 应用程序失败
  • 表面视图+gl表面视图+框架布局

    我是 java 和 OpenGL 的新手 我正在尝试获得一个相机预览屏幕 能够 同时显示 3D 对象 浏览完样本后 api 演示 我想结合示例的代码 api 演示就足够了 但不知何故它不起作用 迫使我 启动时关闭 错误被称为空指针 例外 有
  • 通知声音不适用于 api 10 android

    我用这个功能来显示状态notification 一切正常 但没有声音播放notification public void notifiction main String ticker String title String text int
  • Android NDK 支持区域设置吗?

    我真正想做的就是使用格式化日期strftime x 以正确的顺序 在大多数平台上调用setlocale 足够 在 Android 上 我不断收到 美国日期 那么 Android 不支持语言环境吗 No setlocale and strft
  • Android应用主题更换流畅

    我正在开发一个提供白天和夜间主题的项目 我正在更改主题 夜间主题 AppCompatDelegate setDefaultNightMode AppCompatDelegate MODE NIGHT YES 日主题 AppCompatDel
  • Android:如何创建模态进度“轮”叠加层?

    我想在我的视图上显示模式进度 轮子 叠加层 ProgressDialog 很接近 但我不想要对话框背景或边框 我尝试设置对话框窗口的背景可绘制 this progressDialog new ProgressDialog Main this
  • Android Studio代理设置构建错误

    每当我尝试在 Android Studio 中构建应用程序时 都会收到以下错误 Error 169 254 16 169 254 16 Will ignore proxy settings for these hosts 我收到错误 5 次
  • 在android中从SD卡上传图像到facebook

    我无法从 SD 卡上传 Facebook 上的图像 我使用了下面的代码 但它没有给我错误 但同时它没有上传图像 byte data null try FileInputStream fis new FileInputStream filep
  • Android TextureView 和硬件加速

    我正在尝试实现上所示的示例这一页 http developer android com reference android view TextureView html 我已经在运行 android 4 及以上版本的三种不同设备上进行了尝试
  • 如何使用 isInEditMode() 在编辑器中查看自定义视图的布局

    我必须编辑一个具有自定义视图的软件 当我尝试编辑布局 xml 时 Eclipse 告诉我 在自定义视图中使用 View isInEditMode 可以在显示时跳过代码 在日食中 但我不知道how and where我必须使用isInEdit
  • android系统用户和linux root用户有什么区别

    当我将手机连接到电脑并使用adb shell与我的手机通信并输入的命令ps命令输出当前在我的手机上运行的进程信息 我发现有两个特殊用户 一个是root 另一个是system 据我所知 Android是基于linux的 所以root用户是最大

随机推荐

  • Flutter学习(BottomNavigationBar、FloatingActionButton、Drawer、AppBar、PreferredSize)

    1 BottomNavigationBar BottomNavigationBar 是底部导航条 可以让我们定义底部Tab切换 bottomNavigationBar是Scaffold组件的参数 2 FloatingActionButton
  • 宏任务和微任务

    同步任务 逐条进行 异步任务 1 gt 固定时间 setTimeout setInterval requestAnimationFrame 帧时间固定 promise 每个时间段一样 2 gt 非固定时间 加载文件和加载图片 通信 固定时间
  • 视频无损放大软件:Enhance AI for Mac(支持m1)

    Topaz Video Enhance AI for Mac是一款专业的AI视频无损放大软件 topaz video enhance ai mac版使用时间信息有效提高视频质量和细节 从而达到最好的视频放大 去隔行 降噪和还原效果 而且放大
  • 基于JT808-2019,JT809-2019,JT1078与苏标主动安全协议的部标平台开发

    前言 开发一个可靠的支持视频与Adas的部标平台并不是那么容易 需要从网关 流媒体到应用平台架构再到前端界面友好性的交互 可能需要很多工程师历时好几个月 下面是根据几个方面分别对整个部标平台进行简单介绍 网关 之前的blog也写了很多关于网
  • Servlet——文件的上传

    1 文件上传注意点 必须要有form表单 请求方式必须是post请求 get请求有长度限制 enctype属性必须是multipart form data 数据以多段形式拼接 以二进制流的形式发送到服务器 利用servlet代码接受对应的文
  • WPF 中的window 窗体

    Window 窗体不能嵌套窗体 UserControl 用户控件 布局的时候像窗体那样布局就可以了 Page把窗体以网页形式展现 而一个XAML页面里只能有一个顶级元素 而顶级元素里面只能有一个子元素 因此要有布局控件 Window窗体属性
  • 【解决报错selenium-python】AttributeError: ‘Test_ActionChains‘ object has no attribute ‘driver‘

    Python selenium自动化测试脚本报错 AttributeError Test ActionChains object has no attribute driver 解决方法 在编代码的时候几次遇到同样的问提 找到解决方案后发现
  • python异步操作MySQL(aiomysql)

    安装aiomysql 依赖 Python3 4 asyncio PyMySQL 安装 pip install aiomysql 应用 基本的异步连接connection import asyncio from aiomysql import
  • 疯壳AI语音及人脸识别3-3语音传输与解析显示

    详情地址 https fengke club GeekMart views offline ai 购买链接 https fengke club GeekMart su fKw7Nb7oC jsp 视频地址 https fengke club
  • 源码安装PHP

    安装PHP 阿铭写这本教程时 php当前最新版本为5 5 相信大多网站还在跑着5 2甚至更老的版本 其实5 2版本的php很经典也很稳定 因为阿铭的公司一直在使用5 2版本 但是考虑到版本太老 难免会有些漏洞 所以建议你使用5 3或者5 4
  • 电子科技大学操作系统期末复习笔记(一):操作系统概述

    目录 前言 操作系统概述 操作系统的目标与功能 操作系统的定义 目标 功能 操作系统的历史 单用户系统 简单批处理系统 多道批处理系统 分时系统 个人电脑 分布式系统 互联网时代 移动计算时代 实时系统 操作系统的基本特征 并发 共享 虚拟
  • C++系统的避免各种指针错误

    C 常见的内存问题与解决 原始指针 1 动态内存使用者 仅仅是使用 不负责该对象的生命周期 这种情况下原始指针不会有任何问题 简洁明了 不会影响引用计数 更不会导致循环引用 2 几乎所有的第三方库都是以这种方式使用用户的数据的 智能指针 1
  • linux sleep 头文件

    include
  • Burpsuite使用

    Burpsuite使用 简介 Burp Suite 是用于攻击web 应用程序的集成平台 它包含了许多工具 并为这些工具设计了许多接口 以促进加快攻击应用程序的过程 所有的工具都共享一个能处理并显示HTTP 消息 持久性 认证 代理 日志
  • 编写PE文件解析器(一)

    第一篇先写一个PE格式解析器 学了那么久了写出来防止自己忘记 顺便练练手 PE格式解析是比较基础的内容 后面再越写越深 我写这个不是介绍pe格式 而是说编写解析代码 解释定义什么的网上一堆就不粘了 重要的定义我尽量简洁的描述清楚就行 如果想
  • element-ui表头动态渲染

  • NodeJS 获取指定时区的时间

    获取指定时区的时间 param offset 时区 returns Date 指定时区的 时间信息 module exports getZoneTime offset gt 取本地时间 let localtime new Date 取本地毫
  • mac下的readelf和objdump

    本文转载至 http www cnblogs com zlcxbb p 6059517 html ELF文件包括 1 可重定位的目标文件 2 可执行的目标文件 3 可被共享的目标文件 可以用file命令来看目标文件是否是ELF文件 在lin
  • matlab2018求多元函数驻点,机械优化设计课后习题答案.doc

    第一章习题答案 1 1 某厂每日 8h制 产量不低于1800件 计划聘请两种不同的检验员 一级检验员的标准为 速度为25件 h 正确率为98 计时工资为4元 h 二级检验员标准为 速度为15件 h 正确率为95 计时工资3元 h 检验员每错
  • 笔记:java、android网络交互频繁gc

    背景 纯手写没用三方异步方式网络通讯 现象 execute 之后log出现大量gc 内存总体没有多大变化 频繁出现的gc导致UI等待界面卡顿也着实吓了我一跳 解决思路 1 断点调试跟踪了一下发现是execute的问题 因为其他交互没有出现过