<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[snail_lidc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/snail_lidc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; snail_lidc]]></copyright><item><title><![CDATA[2021-06-16]]></title><link>https://blog.youkuaiyun.com/snail_lidc/article/details/117968925</link><guid>https://blog.youkuaiyun.com/snail_lidc/article/details/117968925</guid><author>snail_lidc</author><pubDate>Wed, 16 Jun 2021 23:05:57 +0800</pubDate><description><![CDATA[闹钟AlarmManager和广播BroadCastReceiver实现后台服务功能性保活功能实现步骤：
由于Alarm不受应用生命周期的影响，可以通过设置系统闹钟的方法，间隔一定时间唤醒设备重新启动服务的方式来实现功能性保活；当然Alarm仍然会受到电池性能优化的影响，在设备处于休眠期时受到限制；当结束休眠期时会自动唤醒服务。对于不需要再休眠期执行操作的程序来讲这已经变相实现了保活。
功能实现步骤：

定义服务
静态广播注册
服务中定义AlarmManager
广播接收器启动服务


定义服务：首次启动服]]></description><category></category></item><item><title><![CDATA[2021-06-16]]></title><link>https://blog.youkuaiyun.com/snail_lidc/article/details/117967987</link><guid>https://blog.youkuaiyun.com/snail_lidc/article/details/117967987</guid><author>snail_lidc</author><pubDate>Wed, 16 Jun 2021 22:25:36 +0800</pubDate><description><![CDATA[垃圾回收引用关系方法区的回收
当前主流的内存管理子系统，都是通过可达性分析算法来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的根对象作为起始节点集，从这些节点开始，根据引用关系向下搜索，由此所有到“GC Roots”不可达的对象，都将被判定为可回收对象。
引用关系
这里不得不说一下java引用关系：

强引用：程序中普遍存在的引用赋值，即类似“Object o = new Object（）”这种引用关系；对象只要强引用关系存着就不会被回收；
软引用：被软引用关联着的对象，在]]></description><category></category></item><item><title><![CDATA[2021-06-03]]></title><link>https://blog.youkuaiyun.com/snail_lidc/article/details/117536063</link><guid>https://blog.youkuaiyun.com/snail_lidc/article/details/117536063</guid><author>snail_lidc</author><pubDate>Thu, 03 Jun 2021 22:53:23 +0800</pubDate><description><![CDATA[学习笔记：Java内存区域与内存溢出异常（二）--对象探秘1. 对象的创建2. 对象的内存布局2.1 对象头2.2 实例数据2.3 对齐填充3. 对象的访问
1. 对象的创建
当虚拟机遇到字节码new指令时，首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用，并且检查这个符号引用代表的类是否已被加载、解析和初始化过；如果没有，则先执行类加载过程。
在类加载检查通过后，虚拟机将为新生对象分配内存。对象所需内存大小在类加载完成后便可完全确定。
2. 对象的内存布局
对象在堆内的存储布局可分为三个部分：]]></description><category></category></item><item><title><![CDATA[2021-06-03]]></title><link>https://blog.youkuaiyun.com/snail_lidc/article/details/117533974</link><guid>https://blog.youkuaiyun.com/snail_lidc/article/details/117533974</guid><author>snail_lidc</author><pubDate>Thu, 03 Jun 2021 21:51:29 +0800</pubDate><description><![CDATA[Java内存区域与内存溢出异常（一）1. 运行时内存区域1.1 程序计数器1.2 Java虚拟机栈1.3 本地方法栈1.4 Java堆1.5 方法区1.6 本机直接内存
1. 运行时内存区域
运行时内存区域分为：程序计数器、java虚拟机栈、本地房发栈、java堆、方法区这几个内存区域。
程序计数器、Java虚拟机栈、本地方法栈都是线程私有的，生命周期与线程相同；而java堆、方法区则属于所有线程共享的内存区域。
1.1 程序计数器
程序计数器是当前线程所执行的字节码的行号指示器，字节码解释器工作时就是通过]]></description><category></category></item></channel></rss>