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

做动漫网站的素材杨伟丽 郑州做网站

做动漫网站的素材,杨伟丽 郑州做网站,网站200m虚拟主机能放多少东西,美食网页设计图片一、OOM out of memory#xff1a;简称OOM#xff0c;内存溢出#xff0c;申请的内存大于剩余的内存而抛出的异常。 对于Android平台#xff0c;广义的OOM主要是以下几种类型 JavaNativeThread 线程数的上限默认为32768#xff0c;部分华为设备的限制是500通常1000左右…一、OOM out of memory简称OOM内存溢出申请的内存大于剩余的内存而抛出的异常。 对于Android平台广义的OOM主要是以下几种类型 JavaNativeThread 线程数的上限默认为32768部分华为设备的限制是500通常1000左右就会触发VSS OOM。因此Thread 00M其实也是VSS OOM的一种表现形式。 引起线程OOM原因1.文件描述符不够 2.地址空间不足 File Descriptor Android 9.0以前fd也是比较宝贵的资源每个进程的上限只有10249.0开始增加到了32768。 JNI Reference JNl Reference 0OM可以通过logcat初步定位。 常用工具 1、LeakCanary val refWatcher: RefWatcher? TestApp.getRefWatcher(activity) refWatcher?.watch(activity);//检测是否有泄露即触发GC回收看activity是否被回收没有被回收就是泄露了。 二、常见的几种内存泄漏 1、长生命周期引用短生命周期2、资源没有释放 单例造成的内存泄露 非静态内部类创建静态实例造成的内存泄露 Handler造成的内存泄露 线程造成的内存泄露 Webview造成的内存泄露 三、OOM的原因以及如何定位OOM OOM产生的原因 1、一次性申请的太多 更改申请对象数量 2.内存资源耗尽未释放 找到未释放的对象进行释放 3.本身资源不够 jmap -heap 查看堆信息 如何优化内存 1、减小对象的内存占用 2、内存对象的复用 3、避免对象的内存泄露 如何定位OOM 如何通过dump定位系统已经OOM挂了 提前设置-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath系统运行中还未OOM 导出dump文件:jmap -dump:formatb,filexushu.hprof 14660Arthas结合ivisualvm 进行调试 查看最多跟业务有关对象-找到GCRoot -查看线程栈 四、GC回收原理 GCRoot——对象可达性分析 可回收对象的判定 通过一系列称为“GC Roots”的对象作为起始点从这些节点向下搜索搜索所有的引用链当一个对象到GC Roots没有任何引用链(即GC Roots到对象不可达)时则证明此对象是不可用的。 五、Java内存分配模型 GCRoot是方法区Method Area、虚拟机栈VM Stack即本地变量、本地方法栈Native Method即静态变量和常量 Stack中的变量。如GCRoot中变量有对堆中对象的引用gc则不回收堆中的该对象如堆中对象无来自GCRoot的引用则回收该对象。例如B b new B();对象b为引用存于虚拟机栈VM Stack中new出的B对象存于堆中。 六、Android profiler——dump内存快照分析 双击打开设备Downloads文件夹下hprof文件文件信息在profiler中被显示。 shallow size浅堆和Retain size深堆的区别 shallow size浅堆是指对象本身占用内存的情况 Retain size深堆是指对象以及对象关联其他引用占用内存的总和。即对象本身被GC回收后导致其他对象同时也被GC回收这些被回收的所有对象占用内存总和。 如下举例 1、对象A,B,C内存占用情况如下A的shallow size是10MRetain size是30M 1、对象A,B,CD内存占用情况如下 A的shallow size是10MRetain size是20M B的shallow size是10MRetain size是10M C的shallow size是10MRetain size是10M D的shallow size是10MRetain size是10M 七、Java的四种引用 1.强引用(Strong Reference)在代码中普遍使用的类似Person personnew Person();如果一个对象具有强引用则无论在什么情况下GC都不会回收被引用的对象。当内存空间不足时JAVA虚拟机宁可抛出outOfMemoryError终止应用程序也不会回收具有强引用的对象。 2.软引用(Soft Reference)表示一个对象处在有用但非必须的状态。如果一个对象具有软引用在内存空间充足时GC就不会回收该对象;当内存空间不足时GC会回收该对象的内存(回收发生在0utofMemoryError之前)。软引用可以和一个引用队列(ReferenceQueue)联合使用如果软引用所引用的对象被GC回收Java虚拟机就会把这个软引用加入到与之关联的引用队列中以便在恰当的时候将该软引用回收。但是由于GC线程的优先级较低,通常手动调用system.gc()并不能立即执行GC因此弱引用所引用的对象并不一定会被马上回收。 3.弱引用(Weak Reference)用来描述非必须的对象。它类似软引用但是强度比软引用更弱一些:弱引用具有更短的生命,GC在扫描的过程中一旦发现只具有被弱引用关联的对象都会回收掉被弱引用关联的对象。换言之无论当前内存是否紧缺,GC都将回收被弱引用关联的对象。 4.虚引用(Phantom Reference)虚引等同于没有引用这意味着在任何时候都可能被GC回收设置虚引用的目的是为了被虚引用关联的对象在被垃圾回收器回收时能够收到一个系统通知。(被用来跟踪对象被GC回收的活动)虚引用和弱引用的区别在于:虚引用在使用时必须和引用队列(ReferenceQueue)联合使用其在GC回收期间的活动如下:ReferenceQueue queuenew ReferenceQueue();PhantomReference prnew PhantomReference(obiect.queue)也即是GC在回收一个对象时如果发现该对象具有虚引用那么在回收之前会首先该对象的虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是否已经加入虚引用来了解被引用的对象是否被GC回收。 软引用和弱引用的区别如下 软引用:gc扫到不一定回收内存不足时才回收 弱引用:gc扫到就回收。 弱引用和引用队列的关系如下 泄露了弱引用没有加入引用队列故引用队列为空 没有泄露弱引用加入引用队列故引用队列不为空 八、Java新生代老年代和永久代的区别 在Java虚拟机JVM的内存管理中堆内存通常被划分为几个不同的区域以便更有效地管理和回收内存。以下是新生代Young Generation、老年代Old Generation和永久代/元空间PermGen/Metaspace的具体含义 1. 新生代 (Young Generation) - 新生代是Java堆内存的一部分主要用于存储新创建的对象。对象在首次分配内存时会被放入新生代。 - 新生代的特点是大量对象在此快速生成并很快消亡因此这里的垃圾回收Garbage Collection, GC非常频繁通常称为Minor GC或Young GC。 - 新生代进一步细分为 Eden 区、两个 Survivor 区例如From 和 To 区每次GC后存活下来的对象会被复制到另一个Survivor区若对象经历了一定次数的GC还存活则晋升至老年代。 2. 老年代 (Old Generation) - 老年代也是Java堆内存的一部分主要存放经过一定时间周期仍然存活下来的对象即经历过多次新生代GC仍然没有被回收的对象。 - 对象一旦晋升到老年代意味着它们生命周期较长老年代的垃圾回收相对较少但是一旦发生通常会是Major GC或Full GC这类GC会比Minor GC更加耗时且影响更大。 3. 永久代 (PermGen) - 在JDK 8及之前版本的HotSpot JVM中永久代是方法区的一个实现用于存储类信息、常量池、静态变量、方法字节码以及其他运行时常驻数据结构。 - 永久代的空间有限如果加载了大量的类或者反射操作过于频繁可能导致永久代空间不足从而抛出java.lang.OutOfMemoryError: PermGen space异常。 4. 元空间 (Metaspace) : - 自JDK 8开始HotSpot JVM取消了永久代的概念并引入了一个新的内存区域叫做元空间Metaspace。 - 元空间同样用于存储类元数据信息但它位于本地内存Native Memory而非堆内存中这意味着它的大小不再受到JVM堆大小的限制而受限于系统的实际可用内存。 - 当类元数据的总量超过了指定阈值或者系统内存限制时将会触发类卸载机制并可能出现java.lang.OutOfMemoryError: Metaspace异常。 总结起来新生代和老年代是用来区分对象生命周期长短进而进行高效内存回收的堆内存区域而永久代在旧版JVM中是方法区的一种实现方式存储类和方法级别的元数据在新版JDK中这部分功能由元空间替代。 九、JVM出现OOM异常会导致进程挂掉吗? 当一个线程在执行代码的过程中大概率需要创建对象而创建对象就需要分配内存如果VM可用内存不够时会进行垃圾回收如果垃圾回收完了之后内存还是不够就会地出OutOfMemoryEror如果没有捕获OutOfMemoryError那么就像抛出一个普通异常一样会导致线程停掉如果捕获了OutOfMemoryEror那么线程可能就不会亭掉其实不管当前线程会不会停掉跟进程会不会挂掉没有直接关系也就是出现,了OutOfMemgrvEror最多只会导致线程停掉如果一个讲程里面的所有非守护线程都亭掉了那么进程才会停掉或者进程占了操作系统的过多内存那么这个进程可能会被操作系统关闭掉。 参考https://blog.csdn.net/pengweid/article/details/137125832 参考彻底解决Android开发中的OOM问题竟然一节课就够了_哔哩哔哩_bilibili 参考美团面试题一个线程 OOM 后其他线程还能运行吗_哔哩哔哩_bilibili
http://www.dnsts.com.cn/news/191353.html

相关文章:

  • 网站建设-应酷那种电影网站怎么建设
  • 石家庄有什么做网站的公司搜索引擎推广是什么
  • 聊城网站建设ui制作网页模板
  • 学校网站建设目标哪个建站系统适合外贸商城网站建设
  • 郯城做网站网站信息登记表扫描件
  • 北京最大做网站的公司有哪些asp与sql做网站
  • 如何能快速搜到新做网站链接做网站要钱吗?
  • asp 公司网站网络管理员是做什么的
  • 中文wordpress网站酒泉网站建设专家
  • 做网站前期创建文件夹如何在工商局网站做清算组备案
  • 珠海 网站建设气象网站建设
  • 快速网站建设服务wordpress建网站主页
  • 婚恋网站互联网电商
  • 网站改版分析乐清网站改版
  • 做游戏网站定位九五至尊娱乐场网站
  • 网站作品欣赏东莞seo优化排名推广
  • 网站根目录多出一.php设计电影完整版视频在线
  • 个人域名 企业网站备案wordpress快速建站教程视频教程
  • 山西做网站怎么样教育培训机构推荐
  • 长春做个人网站做不了网站建设运营策划书
  • 长沙银狐做网站如何做网站的下载的二维码
  • 做折线图网站怎样咨询网络服务商
  • 网站建设中模板做汽车商城网站
  • wordpress 博客主机网站内容优化的重要性
  • 滨湖网站制作网站快速被百度收录
  • 网站模块顺序调整免费一级域名申请
  • it网站建设干嘛的腾讯云动态加速WordPress
  • 宝塔面板做网站免费咨询心理医生qq号
  • 厦门企业网站制作网络销售怎么才能找到客户
  • 做食品那些网站好凡科建站登录入口