`
wayfarer
  • 浏览: 294571 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

手机内存的含义

阅读更多

1. RAM和ROM

      对于手机内存,我们一般会混淆这个概念。手机内存存在两方面的含义。
      用来运行程序的RAM,这个可类比于PC中的内存 ,RAM是可读写的,掉电后信息会丢失。手机RAM实际也不是完全意义上的内存,因为手机的RAM一般由两部分组成,其中一部分存放着OS系统的配置/引导文件以及使用手机产生的数据,掉电后RAM上的东西不会丢失,这部分不是运行用的内存(常见的cache、SQLite等消耗的实际上就是这一部分RAM),因此,G1的RAM为192M,但实际其运行用内存并达不到192M;而在手机上还有一种存储介质Flash ROM,这种介质也可以叫做内存(手机上绝大部分都是电子的存储介质,而没有像PC上的硬盘这样的机械式存储介质,所以人们干脆把 Flash ROM也叫作内存),实际类比于PC中的硬盘 ,对于普通用户ROM是只读的(拥有root权限才可以改写ROM),掉电后信息不会丢失。
      一般来说,ROM比RAM要大,只有智能手机的ROM和RAM才能达到G级别的容量,而且价格很昂贵。手机所说的4G/8G一般指的是SD存储卡 。J2ME中通过Runtime.getRuntime().freeMemory()得到的数据实际也是RAM数据。
      虚拟机堆栈(heap)大小,即内存大小在手机制作过程中已由厂商烧制好,用户无法改动(这个和服务器相关EE程序不同,如果出现内存溢出,你只能从程序中考虑解决)。
      对于GPhone,ROM可以理解为操作系统(GPhone的ROM存储的是android OS),好比Windows XP。我们可以在手机的Settings --> About phone中查看ROM的版本号。手机刷机实际就是刷ROM,好比重装系统。GPhone的root权限实际就是管理员权限,好比Windows中的 Administrator,用户只有拥有root权限,才可以刷机。

 

2. wtk内存

      totalMemory()表示调用时刻,java虚拟机现在已经从操作系统那里获取来的内存大小。在java程序运行的过程的,内存总是慢慢的从操作系统那里取的,基本上是用多少取多少。 但是java虚拟机100%的情况下是会稍微多取一点的,这些取过来而又没有用上的内存,实际上就是freeMemory() 。freeMemory()表示调用时刻,java虚拟机现在已经从操作系统那里多获取来的内存大小。所以这2个方法都是没什么实际意义的。想要在真机上得到一个j2me应用程序最多能用多少,可以使用以下方法:写一个最最简单的应用,然后100kb、100kb的循环申请内存直到OutOfMemoryError,看看最多能申请多少内存。
      SUN WTK2.5.2模拟器默认情况下只能申请约1.9M。如果想要知道你的应用在不同时刻已经占用内存的情况,可以仿照上述方法。 分享一些我已经测试的真机应用可以申请的最大内存的数据,而且诺基亚多个应用互不干扰,BB没有测多个应用的情况:N95 14800K、N96 16200K、BB8800 34600K。

      以上论述针对智能机(动态分配内存,一开始totalMemory很小,以后逐渐增大),非智能机上系统是一次性分配给虚拟机的。

 

3. GC和RAM

      RAM中被应用程序占用的内存是一直会增加的,直至可分配的空间将要耗近时,Java的垃圾回收机制才会启动。才会回收内存。这就是Java的垃圾“自动”回收机制,“自动”,就是一般不回收,直至没有空间了才回收。下面的这张图片是内存被占用的情况,第二个转折点没有上升至最高点就进行内存回收是因为我点击了Run GC。手动回收空间了。

  • 大小: 16.8 KB
分享到:
评论
1 楼 elena_java 2010-09-02  
我在使用如下方法
private Bitmap getBitmap(String listUrl){
if(listUrl !=null){
pathName = getFilesDir().getPath()+File.separator+Global.LISTIMG+
File.separator + listUrl.substring(listUrl.lastIndexOf("/")+1);
try{
d = BitmapFactory.decodeFile(pathName);
}catch(Error er){
Log.e("tag", "err", er);
}
// d.recycle();
}
return d;
}或是bitamp=BitmapFactory.decodeByteArray(b, 0, b.length);读取大量图片的时候经常会出现如下异常
09-02 16:49:31.326: ERROR/dalvikvm-heap(3548): 691200-byte external allocation too large for this process.

09-02 16:49:31.436: ERROR/AndroidRuntime(3548): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.Bitmap.nativeCreate(Native Method)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.Bitmap.createBitmap(Bitmap.java:468)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.Bitmap.createBitmap(Bitmap.java:435)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:462)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:323)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.content.res.Resources.loadDrawable(Resources.java:1705)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.content.res.TypedArray.getDrawable(TypedArray.java:548)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.view.View.<init>(View.java:1850)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     at android.widget.ImageView.<init>(ImageView.java:109)
09-02 16:49:31.436: ERROR/AndroidRuntime(3548):     ... 28 more
请问如何解决啊?

相关推荐

    你可能不知道的智能手机那点事

    而RAM就相当于电脑中的内存条,对应手机的运行内存,但它并不是像电脑一样单独存在的,是与手机CPU整合在一起的。目前市售智能机中,一般RAM都达到了1GB容量,空间越大手机处理任务以及系统运行速度也会相应越快。 ...

    手机通信原理

    本章概要地介绍了用无线电波传递信息的基本原理。就广义的传递信息而言,必须要 有“发”和“收”两个环节。无线电传输信息也不例外...因为手机是一部双工制的超小型无线收发信机,所以本章是学习手机射频电路的入门。

    《智能手机应用150操作指南》推介.docx

    许多老年朋友,尤其是无法上老年大学的朋友,热切盼望能有一本通俗易懂,方便操作的学习智能手机的工具用书。 《智能手机应用150操作指南》推介全文共22页,当前为第2页。 《智能手机应用150操作指南》推介全文共22...

    手机快充技术原理与对比分类

    本文为您讲述快充技术的含义,手机快充技术原理,快充的几种模式以及现阶段市面上主要的几种快充技术解决方案及其各自之间的对比,提供您作为参考使用。  首先,什么是快充技术?顾名思义,快充就是能够提升...

    Android利用方向传感器获得手机的相对角度实例说明

    将手机放在桌子上,z轴的方向是从手机指向天空。 2.方向传感器 在方向传感器中values变量的3个值都表示度数,它们的含义如下: values[0]:该值表示方位,也就是手机绕着Z轴旋转的角度。0表示北(North);90表示东...

    用C语言开发手机软件 -Windows+CE+6.0开发者参考

    15.3.1 关机的含义 15.3.2 查询电源状态 15.3.3 电源管理器 15.3.4 不使用电源管理器来管理电源 第16章 串行通信 16.1 基本串行通信 16.1.1 打开和关闭串行端口 16.1.2 读写串行端口 16.1.3 异步串行I/O 16.1.4 ...

    移动开发之自适应手机屏幕宽度

    移动开发之自适应手机屏幕宽度 1、使用meta标签,这也是普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。 首先解释...

    藏在首台Android手机内部芯片电路设计的秘密

    G1名字中的“1”有很多含义,不仅仅是支持Google的Android系统的部手机,它还是部使用T-Mobile的3G网络的手机、HTC的部电容式触摸屏手机、HTC的部轨迹球手机以及HTC的第二个尝试5行键盘的手机。  对于初学者,...

    用C语言开发手机软件-Windows CE 6.0开发者参考

    15.3.1 关机的含义 15.3.2 查询电源状态 15.3.3 电源管理器 15.3.4 不使用电源管理器来管理电源 第16章 串行通信 16.1 基本串行通信 16.1.1 打开和关闭串行端口 16.1.2 读写串行端口 16.1.3 异步串行I/O 16.1.4 ...

    消费电子中的藏在首台Android手机内部芯片电路设计的秘密

    G1名字中的“1”有很多含义,不仅仅是支持Google的Android系统的第一部手机,它还是第一部使用T-Mobile的3G网络的手机、HTC的第一部电容式触摸屏手机、HTC的第一部轨迹球手机以及HTC的第二个尝试5行键盘的手机。...

    pinyinIME:一款比较好用的拼音输入法,比起手机,它更适用于电视上

    pinyinIME 一款比较好用的拼音输入法,比起手机,它更适用于电视上

    消费电子中的手机快充技术原理与对比分类

    本文为您讲述快充技术的含义,手机快充技术原理,快充的几种模式以及现阶段市面上主要的几种快充技术解决方案及其各自之间的对比,提供您作为参考使用。  首先,什么是快充技术?顾名思义,快充就是能够提升...

    基于Android的电子词典设计与实现doc.doc

    本着简洁高效的开发初衷,本文所讨论的Android电子词典直观展现本地查词、网络查词、添加生词等核心功能,用户从字面意思上可直接掌握基本功能的含义,以及操作应用。另外,作为开源的手机应用,-在法律政策方面与...

    零基础入门学会手机摄影构图-视频教程网盘链接提取码下载 .txt

    摄影构图是照片画面上的布局、结构。其具体含义是运用相机镜头的成像特征和摄影造型手段,根据主题思想的要求,组成一定的画面,使客观对象比现实生活更富有表现力和艺术感染力,更充分更好地揭示一定的内容。 视频...

    3G知识详解全攻略 3G,全称为3rd Generation

    3G,全称为3rd Generation,中文含义就是指第三代数字通信。1995年问世的第一代数字手机只能进行语音通话;1996到1997年出现的第二代数字手机便增加了接收数据的功能,如接受电子邮件或网页;第三代与前两代的主要...

    Mathstudio中文教程下载

    这方便你知道你需要的功能由哪个函数来执行,知道了功能也就大概知道了用法,而且具体使用的格式和语法软件的界面已经给出(参见本文末尾的Catalog部分,也是手机上的Catalog),如果不理解其中有些符号的含义,可以...

    手机目标跟踪寻迹小车+蓝牙SPP通信,附APP和Arduino源码-电路方案

    1.进软件之后可以点击连接蓝牙,选择你的蓝牙模块(模块需要事先在手机系统蓝牙设置里面配对好),连接上之后如果有目标信息就会通过蓝牙发送到模块上,Arduino进行读取就可以了。 2.点击左上角的按钮进入预览画面,...

    路由器指示灯有哪些含义?

    无线网络有时候也会问题,导致电脑或者智能手机设备也会出现一些链接上问题,这个时候我们通常可以通过路由器指示灯来判断问题所在,从中可以更好的找到一些故障原因。下面就介绍下路由器的指示灯含义

    3G应用开发之Android

    3G,全称为3rd Generation,中文含义就是指第三代数字通信。 所谓3G,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。 3G只是一种通信技术标准,符合这个标准的技术有WCDMA、CDMA2000、TD-SCDMA...

    第三代移动通信技术简述

    第三代移动通信技术,简称3G,全称为3rd Generation,中文含义 就是指第三代数字通信。1995年问世的第一代模拟制式手机(1G) 只能进行语音通话;1996到1997年出现的第二代GSM、TDMA等数 字制式手机(2G)便增加了接收...

Global site tag (gtag.js) - Google Analytics