android随意创建字体对象引发的应用程序运行时占用内存过大

在实际开发android项目过程中,由于是初次设置android系统没有的字体,所以用到了一个外部文件FounderFineRoundSimplified.ttf。为了让这个文件随apk一起打包进入应用,需要将该文件放在assets/fonts目录下,fonts是手动在assets目录下创建的目录,是为了方便管理。

在应用程序用,由于整个应用程序凡是涉及到设置字体的,我都在即将要使用的地方使用了:Typeface fontFace = Typeface.createFromAsset(getAssets(),"fonts/FounderFineRoundSimplified.ttf"); 这句话来创建一个字体对象,由于使用的比较多,所以到后来程序中很多位置出现了这条语句。等到我把整个程序开发完毕之后做测试时,发现我的这个应用程序非常的占内存,一运行起来就要占用200M,这个数字的非常的恐怖的,很少见到一个简单的应用程序运行时需要这么多内存的,后来通过屏蔽语句一句一句的排除,发现,就是这条语句,每次创建时都会占用大约5M的内存,程序中我是用的位置,应该不在20条以下了,所以才会出现,无论如何我怎么精简我的其他部分程序都无法将运行内存降低下去,知道我把这条语句都屏蔽之后,占用内存奇迹般的减少了。但是由于程序中任然需要使用到字体设置,所以我将这条语句放在了application

中这样就达到了在整个运用程序中只需一条这个语句就可以设置所有字体了。这个问题困扰了两天,最终得以解决,在此特意做下笔记,提醒自己切勿忘记。

原文:http://blog.csdn.net/xzwjraohuamin1/article/details/20373011

Android字体占有内存,android随意创建字体对象引发的应用程序运行时占用内存过大...相关推荐

  1. 解决Golang程序运行时占用内存不断增加的问题

    日常开发时遇到了这样的问题:死循环程序打包为exe后执行exe文件,打开任务管理器,发现程序占用内存在不断增加. 解决方式: 删掉defer语句 删掉fmt.Print语句提高性能 循环语句中添加ru ...

  2. 解决Windows10 系统中桌面窗口管理器运行时占用内存过大的问题

    问题复现 问题原因 产生这个问题的原因是因为在某次更新中 引发了内存泄漏问题所以会导致桌面窗口管理器运行时占用内存过大. 解决办法 链接: inter显卡驱动 选择安装驱动就行.

  3. 程序运行时的内存空间分布

    本文转载自http://blog.csdn.net/ljianhui/article/details/21666327 谢谢原文作者的辛勤付出. 我们在写程序时,既有程序的逻辑代码,也有在程序中定义的 ...

  4. 运行时错误7内存溢出_C++程序运行时的内存模型

    C++程序在运行时会将内存划分为4个区域: 1·代码区:存放函数体的二进制代码,由操作系统进行管理 2·全局区:存放程序的全局变量.静态变量.常量 3·栈区:由编译器进行自动分配和释放,存放函数的参数 ...

  5. 程序运行时对应的内存分布(BSS段、数据段、代码段、堆、栈)关系

    参考:程序运行时对应的内存分布关系 作者:嵌入式基地(公众号) 发布时间: 2021-04-28 网址:https://mp.weixin.qq.com/s/AVDPZawSjg9HtxEm8vsFB ...

  6. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...

    前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机, ...

  7. Java 运行时的内存划分

    Java 运行时的内存划分 程序计数器 记录当前线程所执行的字节码行号,用于获取下一条执行的字节码. 当多线程运行时,每个线程切换后需要知道上一次所运行的状态.位置.由此也可以看出程序计数器是每个线程 ...

  8. 类和对象运行时在内存里是怎么样的?各种变量、方法在运行时是怎么交互的?

    转载自   类和对象运行时在内存里是怎么样的?各种变量.方法在运行时是怎么交互的? 在回答这个问题之前先了解一下Java的一些基础知识. 我们知道Java程序运行在虚拟机环境里,那我们先看一下虚拟机的 ...

  9. 了解JVM运行时的内存分配

    前言 上文中,在介绍运行时数据区域中的 JAVA 堆时,提到了 JVM 中的堆,一般分为三大部分:新生代.老年代.永久代,本文将进一步了解运行时的内存分配情况. 正文 1.新生代 主要用来存放新生(n ...

最新文章

  1. AndroidLinker与SO加壳技术之下篇
  2. 论文盘点:性别年龄分类器详解
  3. Boost:gzip解压缩器
  4. Xilium.CefGlue的入门
  5. cad快捷命令大全_最全CAD快捷键命令大全(图文版、文字版、键盘版)
  6. java计算一个多边形的重心_2D凸多边形碰撞检测算法(二) - GJK(上)
  7. 数据结构专题:数据结构的学习困境
  8. 计算机二级access考试是不是操作题必须到36分?,2016年计算机二级access考试题库...
  9. Exchange2010 owa 访问 http 500 内部服务器错误
  10. 关于XGB.booster()报错TypeError: 'str' object is not callable的解决方法
  11. java keytool 工具
  12. 简单说说jsonp原理
  13. 一文带你理解URI 和 URL 有什么区别?
  14. 如何收割暑期实习offer
  15. python 爬虫 403 Forbidden
  16. 计算机一级的wps软件,计算机一级WPS
  17. 77.组合 | 40.组合总和II | 39.组合总和 | 784.字母大小写全排列
  18. java调用sap系统wsdl_Java调用Axis2用SAP WSDL生成的Stub文件
  19. 英语3500词(18/20)health主题(2022.4.28)
  20. U-boot中怎么添加配置菜单选项

热门文章

  1. 30天敏捷生活(8): 生成你的20/80待做事项列表
  2. Mysql INSERT INTO .. ON DUPLICATE KEY更新多行记录
  3. golang net/http 超时机制完全手册
  4. 红蓝对抗 linux内网渗透
  5. linux 查看用户信息
  6. linux c va_list 32位和64位的差异
  7. 寻找调用DebugPort的函数
  8. Android中的颜色
  9. TCP/IP详解--第二章
  10. matlab清除所有数据,清除仿真数据检查器中的所有数据