当前位置: 首页 > news >正文

前端特效网站如何汉化wordpress主题

前端特效网站,如何汉化wordpress主题,大黔门官方网站建设,天津提升专业关键词排名名词解释 内存泄漏:即memory leak。是指内存空间使用完毕后无法被释放的现象#xff0c;虽然Java有垃圾回收机制#xff08;GC#xff09;#xff0c;但是对于还保持着引用#xff0c; 该内存不能再被分配使用#xff0c;逻辑上却已经不会再用到的对象#xff0c;垃圾回…名词解释 内存泄漏:即memory leak。是指内存空间使用完毕后无法被释放的现象虽然Java有垃圾回收机制GC但是对于还保持着引用 该内存不能再被分配使用逻辑上却已经不会再用到的对象垃圾回收器不会回收它们。 内存溢出:即out of memory, 当你要求分配的内存超过了系统给你的内存时, 系统就会抛出out of memory的异常(每个Android能用的内存是有限的) 。比如: 当前应用只剩下4M的空间可用, 但你却加载得到一个需要占用5M空间的图片Bitmap对象, 就会抛出溢出的异常 常见内存泄漏场景解决方案 1.非静态内部类、匿名类 非静态内部类会持有外部类的引用如果非静态内部类的实例是静态的就会长期的维持着外部类的引用阻止被系统回收。 解决方案是使用静态内部类 1.1非静态内部类 非静态内部类non static inner class和 静态内部类static inner class之间的区别。 如果非静态内部类所创建的实例是静态的其生命周期等于应用的生命周期。非静态内部类默认持有外部类的引用而导致外部类无法释放最终造成内存泄露。即外部类中持有非静态内部类的静态对象。  public class MainActivity extends Activity {//非静态内部类的静态实例引用public static TestClass testClass null;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//保证非静态内部类的实例只有1个if (testClass null) {testClass new TestClass();}}// 非静态内部类private class TestClass {//todo something} } 当 MainActivity 销毁时因非静态内部类单例的引用testClass 的生命周期等于应用的生命周期持有外部类 MainActivity 的引用故 MainActivity 无法被 GC 回收从而导致内存泄漏。 解决方案 将非静态内部类设置为静态内部类静态内部类默认不持有外部类的引用 该内部类抽取出来封装成一个单例 尽量避免非静态内部类所创建的实例是静态的 1.2 多线程相关的匿名内部类和非静态内部类继承 Thread 类、实现 Runnable 接口、AsyncTask 当子线程正在处理任务时如果外部类销毁 由于子线程实例持有外部类引用将使得外部类无法被垃圾回收器GC回收从而造成内存泄露。  public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);new MyThread().start();}private class MyThread extends Thread {Overridepublic void run() {//todo someting}} }解决方案 使用静态内部类的方式静态内部类不默认持有外部类的引用。 private static class MyThread extends Thread {Overridepublic void run() {//todo someting}}当外部类结束生命周期时(即Activity或Fragment)强制结束线程(onDestroy或onDestroyView)。使得工作线程实例的生命周期与外部类的生命周期同步。 Overrideprotected void onDestroy() {super.onDestroy();myThread.interrupt();}2. Handler内存泄漏重新理解为什么 Handler 可能导致内存泄露 Handler内部message是被存储在MessageQueue中的MessageQueue中的 Message 持有 Handler 实例的引用有些message不能马上被处理存在的时间会很长导致handler无法被回收如果handler是非静态的内部类、匿名内部类默认持有外部类的引用如 MainActivity 实例导致它的外部类无法被回收。 public class MainActivity extends Activity {private MyHandler myHandler;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myHandler new MyHandler();new Thread() {Overridepublic void run() {try {//执行耗时操作Thread.sleep(20000);} catch (InterruptedException e) {e.printStackTrace();}//发送消息myHandler.sendEmptyMessage(1);}}.start();}private class MyHandler extends Handler {Overridepublic void handleMessage(Message msg) {//处理消息事件}} } 解决方案 使用静态内部类弱引用的方式保证外部类能被回收。因为弱引用的对象拥有短暂的生命周期在垃圾回收器线程扫描时一旦发现了具有弱引用的对象不管当前内存空间足够与否都会回收它的内存。 public class MainActivity extends Activity {private MyHandler myHandler;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myHandler new MyHandler(this);new Thread() {Overridepublic void run() {try {//执行耗时操作Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}//发送消息myHandler.sendEmptyMessage(1);}}.start();}public void test() {Log.d(TAG, test);}private static class MyHandler extends Handler {//定义弱引用实例private WeakReferenceActivity reference;//在构造方法中传入需持有的Activity实例public MyHandler(Activity activity) {//使用 WeakReference 弱引用持有 Activity 实例reference new WeakReferenceActivity(activity);}Overridepublic void handleMessage(Message msg) {//处理消息事件//调用Activity实例中的方法((MainActivity) reference.get()).test();}} } 当外部类结束生命周期时清空 Handler 内消息队列。 Overrideprotected void onDestroy() {if (myHandler! null) {myHandler.removeCallbacksAndMessages(null);}super.onDestroy();}3. Context导致内存泄漏 根据场景确定使用Activity的Context还是Application的Context,因为二者生命周期不同对于不必须使用Activity的Context的场景Dialog,一律采用Application的Context,单例模式是最常见的发生此泄漏的场景比如传入一个Activity的Context被静态类引用导致无法回收 4. 静态View导致泄漏 使用静态View可以避免每次启动Activity都去读取并渲染View但是静态View会持有Activity的引用导致无法回收。 解决方案 尽量避免 static 成员变量引用资源耗费过多的实例如 Context若需引用 Context则尽量使用Applicaiton的 Context。 使用弱引用WeakReference 代替强引用持有实例。 在Activity销毁的时候将静态View设置为null 5.资源对象未关闭导致 对于资源若在 Activity 销毁时无及时关闭 / 注销这些资源则这些资源将不会被回收从而造成内存泄漏。 如广播、文件、Bitmap、数据库等使用  //对于广播BroadcastReceiver注销注册 unregisterReceiver(broadcastReceiver);//对于文件流File关闭流 inputStream / outputStream.close();//对于数据库游标cursor使用后关闭游标 cursor.close();//对于图片资源BitmapAndroid分配给图片的内存只有8M若1个Bitmap对象占内存较多当它不再被使用时应调用recycle()回收此对象的像素所占用的内存最后再赋为null bitmap.recycle(); bitmap null;// 对于动画属性动画将动画设置成无限循环播放setRepeatCount(ValueAnimator.INFINITE);后 // 在Activity退出时记得停止动画 animator.cancel();6.监听器未关闭 很多需要register和unregister的系统服务要在合适的时候进行unregister,手动添加的listener也需要及时移除 7.集合中的对象未清理 集合用于保存对象如果集合越来越大不进行合理的清理 8. WebView导致的内存泄漏目前没有遇到 WebView只要使用一次内存就不会被释放所以WebView都存在内存泄漏的问题。 通常的解决办法是为WebView单开一个进程使用AIDL进行通信根据业务需求在合适的时机释放掉 内存泄漏分析工具 lint lint 是一个静态代码分析工具同样也可以用来检测部分会出现内存泄露的代码平时编程注意 lint 提示的各种黄色警告即可。如 也可以手动检测在 Android Studio 中选择 Code-Inspect Code。 然后会弹出选择检测范围 点击Ok,等待分析结果 这个工具除了会检测内存泄漏还会检测代码是否规范、是否有没用到的导包、可能的bug、安全问题等等。 Memory Profile Memory Profile 的使用 LeakCanary LeakCanary
http://www.pierceye.com/news/3819/

相关文章:

  • 举报网站建设网络公司好听的名字
  • 婴贝儿网站建设网站开发公司的生产
  • 什么是网站易用性爱城市网app官方下载
  • 登封市城乡建设路网站今天的新闻主要内容
  • 什么网站允许搭建网络文化经营许可证在哪里办
  • 网站开发前台wordpress主题带商城
  • 乐都企业网站建设公司个人网站页面设计作品
  • 展示营销类网站网站上传不了图片不显示不出来
  • 网站建设要外汇网站建设
  • 有网络网站打不开html设计软件
  • 网站降权如何恢复网站建设源码是什么
  • 河北建设部网站企业网站的作用和意义
  • 河南省住房和城乡建设厅网站主页南通网站建设方案开发
  • 自己做网站怎么编代码引流推广怎么做
  • 北京网站建设 网站维护python做网站需要什么
  • 如何 套用模板做网站网站策划方案实例
  • appcms程序怎么做网站做公众号的软件
  • 义乌微信网站建设费用菏泽住房与城乡建设官网
  • 户外商品网站制作wordpress多站点 用户
  • 高校网站群建设方案宁夏省建设厅网站
  • 网站建设与网页设计可行性分析报告网站引导动画怎么做
  • 牡丹江seo网站推广蜘蛛屯优化排名个人网站设计论文模板
  • 医院做网站需要去备案好的国内网站建设公司
  • 家具网站开发设计任务书与执行方案洋县住房和城乡建设管理局网站
  • 网站建设小说毕业设计wordpress付费阅读
  • 360全景网站制作百度推广有用吗
  • 联想用来网站开发笔记本济南网站制作培训班
  • 网站列表功能电子工程类
  • 12380网站建设的意见建议专业网站托管
  • 做cpa推广的网站怎么弄北京市住房和城乡建设厅