JDK,JRE,JVM,SDK,API,ADT,OOM,ANR
来源:互联网 发布:小学生学编程 编辑:程序博客网 时间:2024/05/16 13:51
目录:JDK,JRE,JVM,SDK,API,ADT,OOM,ANR
JDK:
全称:Java Development Kit
中文:Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。
JRE:
全称:Java running environment
中文:java运行环境
jvm
全称:Java Virtual Machine
中文:java的虚拟机
区别和联系:
JDK就是java的开发工具集,顾名思义就是你做开发用的,其中包括javac,也就是java compiler等,你所写的java程序在经过javac编译后会形成字符行文件,这个是java的中间文件,计算机是看不懂的,而这个文件是给jvm(java的虚拟机)用的,由jvm进行解释后形成机器语言给计算机。而这个jvm就在jre中,也就是说java程序的运行要有jre来担当。
所以jdk和jre的区别就是一个用于开发,一个用于运行,联系就是他们都是java开发者所必备的(除非你就像运行java程序,那么用jre就足够了)。
SDK
英文:Software Development Kit
中文:软件开发工具包
API
英文:Application Programming Interface,
中文:应用编程接口
是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
ADT
API就是网站提供的接口,比如你想开发一个电商的手机客户端,你从哪里读取数据写入数据呢?总不能从Web版里调用吧?那里是一堆一堆的html代码啊,所以API就是网站提供的接口,供开发者接入用的。
OOM
Out of Memory,内存溢出
出现的原因:比如操作中有死循环,或者快速滑动加载很多图片(图片过多过大),或者其他导致内存快速大量消耗而来不及回收使用。
总结为:一、加载对象过大; 二、相应资源过多,没有来不及释放。
解决这样的问题,也有一下几个方面:
一:在内存引用上做些处理,常用的有软引用、强化引用、弱引用
二:在内存中加载图片时直接在内存中做处理,如:边界压缩.
三:动态回收内存
四:优化Dalvik虚拟机的堆内存分配
五:自定义堆内存大小
在内存中加载图片时直接在内存中做处理,如:边界压缩.
(1):要求服务器端限制图片大小,处理成适合移动端的图片,比如宽度<400像素,用户头像<100像素
(2):终端代码自己缩放:
inSampleSize=4:表示按照url请求的图片的1/16显示,即宽高都缩放成1/4;
inJustDecodeBounds=true:表示只按照url去请求图片的边框,知道它的宽高,这样就方便自己合理的缩放。算出缩放比例size之后,再按照size去请求图片(请求之前必须加代码inJustDecodeBounds=false,不然还是请求边框)。
ANR
- Application Not Responding ,程序不响应
在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因此,在程序里对响应性能的设计很重要,这样系统不会显示ANR给用户。默认情况下,在android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间则是10秒。(不同手机不同android版本时间可能不一样,不是固定的5秒)
出现的原因:在主线程做了耗时工作,
Android应用程序通常是运行在一个单独的线程(例如,main)里。这意味着你的应用程序所做的事情如果在主线程里占用了太长的时间的话,就会引发ANR对话框,因为你的应用程序并没有给自己机会来处理输入事件或者Intent广播。
因此,运行在主线程里的任何方法都尽可能少做事情。特别是,Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。潜在的耗时操作,例如网络或数据库操作,
解决办法:开子线程做耗时工作
不是说你的主线程阻塞在那里等待子线程的完成--也不是调用Thread.wait()或是Thread.sleep()。替代的方法是,主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程,主线程在做相应的操作。
一般来说,在应用程序里,100到200ms是用户能感知阻滞的时间阈值。因此,这里有一些额外的技巧来避免ANR,并有助于让你的应用程序看起来有响应性。
如果你的应用程序为响应用户输入,正在后台工作的话,可以显示工作的进度(ProgressBar和ProgressDialog对这种情况来说很有用)。
如果你的应用程序有一个耗时的初始化过程的话,考虑可以显示一个Splash Screen或者快速显示主画面并异步来填充这些信息。在这两种情况下,你都应该显示正在进行的进度,以免用户认为应用程序被冻结了。
- JDK,JRE,JVM,SDK,API,ADT,OOM,ANR
- 什么是JDK,JRE,SDK,JVM以及API
- JDK SDK JRE JVM
- JDK、SDK、JRE、JVM
- SDK JDK JRE ADT 的区别
- jdk,sdk,jre,jvm,ide,adt,跨平台性,j2ee,j2se
- jdk、jre理解 sdk、IDE理解 adt、android sdk理解
- 什么叫JDK,SDK,JRE,JVM
- SDK、JDK、JRE和JVM的关系
- SDK JDK JRE JVM 的关系
- SDK、JDK、JRE和JVM的关系
- SDK、JDK、JRE、JVM的区别
- JDK、SDK、JRE、JVM概念详解
- J2EE J2SE J2ME JDK SDK JRE JVM
- java jdk jre sdk jvm 详解
- JVM 、JRE 、JDK 、SDK的关系
- JDK(SDK)、JRE、JVM的关系
- JDK、SDK、JRE、JVM概念详解
- CodeVs 1011
- USACO 4.2 Job Processing 工序安排(贪心-堆)
- Android 人名 随机抽奖
- Codeforces 607B - Zuma (区间DP)
- Errors running builder 'DeploymentBuilder' on project '工程名' xxxNullpointException
- JDK,JRE,JVM,SDK,API,ADT,OOM,ANR
- WCF生成客户端对象方式解析
- iOS开发——单例的实现、使用与架构
- 葡萄城报表-核心代码展示
- Win8如何查看已保存的无线网络
- POJ1035——Spell checker
- spring头
- Android-Creating an Input Method(IME)
- ios程序中的内存分配 栈区堆区全局区