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

京东网站建设策划书危机公关处理五大原则

京东网站建设策划书,危机公关处理五大原则,seo排名谁教的好,做视频官方网站前言#xff1a; Java堆作为内存管理中最核心的一部分#xff0c;承担着对象实例的存储和管理任务。堆内存的高效使用对于保障程序的性能和稳定性至关重要。因此#xff0c;深入理解Java堆回收的原理、机制和优化策略#xff0c;对于Java开发人员具有重要的意义。 本文旨在…前言 Java堆作为内存管理中最核心的一部分承担着对象实例的存储和管理任务。堆内存的高效使用对于保障程序的性能和稳定性至关重要。因此深入理解Java堆回收的原理、机制和优化策略对于Java开发人员具有重要的意义。 本文旨在探讨Java堆回收的相关概念、工作原理以及常见的回收算法帮助读者全面理解Java内存管理中的关键环节并提供实用的建议和最佳实践以便更好地应对内存管理方面的挑战提升Java应用程序的性能和稳定性。 目录 前言 堆回收的常见判断方法 1.引用计数法 2.可达性分析法 可达性分析法  常见的GC Root对象 JAVA的四种引用关系 1.强引用 2.软引用 3.弱引用  4.虚引用  总结 堆回收的常见判断方法 1.引用计数法 每个对象维护一个引用计数器记录被其他对象引用的次数。当计数器为0时表示该对象不再被引用可以被回收。然而引用计数法难以解决循环引用的问题即若存在循环引用即使对象互相不可达其引用计数也不为0导致无法回收。 2.可达性分析法 通过一组称为GC Roots的根对象作为起点从这些根对象出发沿着引用链进行遍历标记所有被引用的对象为可达对象。剩下的未被标记的对象即为不可达对象可以被回收。在Java中根对象包括虚拟机栈中引用的对象、方法区中静态变量引用的对象以及本地方法栈中JNIJava Native Interface引用的对象。 在这种对象区分中根对象和普通对象是存在引用关系的。 可达性分析算法是指如果从某个对象到 GC Root对象是可达的对象就不可以被回收。 简单的来说我们利用 根对象 将 所有  需要判定是否回收 的对象分为了两类根对象可达的对象和根对象不可达的对象。 根对象可达的 对象 不可以 回收根对象不可达的对象 可以进行回收 而Java进行堆回收的时候使用的方法就是可达性分析法因此我们来深入学习一下可达性分析法 可达性分析法  由上文我们简单的介绍可达性分析算法中可以看出学习JVM中哪些对象是GC Root对象是比较重要的 常见的GC Root对象 线程Thread对象。系统类加载器加载的Java.long.Class对象。监视器对象用于保存同步锁synchronized 关键字所持有的对象。本地方法调用时使用的全局对象。  如何判断一个对象是否被GC Root对象引用 使用工具可以使用 Java 调试工具如 jmap、jconsole、jvisualvm 等来查看堆中的对象引用关系。这些工具可以提供实时的内存快照并显示对象的引用链。如果发现某个类的引用链中没有 GC Root 对象那么该类就不是 GC Root 对象。 分析代码通过代码分析可以判断一个类是否是 GC Root 对象。通常情况下以下几种情况会使一个类成为 GC Root 对象 作为线程对象的局部变量或静态变量。作为系统类加载器加载的 Class 对象的局部变量或静态变量。作为锁对象进行同步操作。作为本地方法调用时使用的全局对象。可以检查代码中是否存在上述情况如果不存在则说明该类不是 GC Root 对象。 但是不是只有满足上述条件的对象才会被回收呢 其实并不是的通过GC Root引用对象只是 Java的五种对象引用的一种我们来学习一下 这五种对象引用以及在这五种引用下是如何判断对象能否回收的。 JAVA的四种引用关系 1.强引用 使用最常见的引用方式。当一个对象被强引用关联时即使内存不足时也不会被垃圾回收器回收。只有当该对象没有任何强引用时才可能被回收。 可达性分析算法中描述的对象引用一般就是强引用。 Java 中 大部分场景 都用的是 强引用 对象的直接引用当使用类似 Object obj new Object(); 这样的语句时obj 对象就是一个强引用因为它明确指向了一个对象。 静态变量静态变量通常存放在方法区中在类加载的过程中初始化其生命周期和类一样长因此静态变量的引用是强引用。 实例变量对象中的实例变量也具有强引用只要对象存在其实例变量的引用就会一直存在。 2.软引用 使用SoftReference类表示通过SoftReference包装一个对象。当内存不足时垃圾回收器可能会回收被软引用关联的对象但这不是强制性的只有当内存真正不足时才会回收 软引用 常用在 缓存 当中。不会用软引用来关联代码中的核心类因为核心类不应该被回收。 软引用的应用场景  缓存和高速缓存软引用可以用于实现缓存或高速缓存当内存不足时垃圾回收器可能会回收已经被软引用关联的对象。这种方式可以避免内存溢出的问题。例如 MapKey, SoftReferenceValue cache new HashMap(); Value getValue(Key key) {SoftReferenceValue ref cache.get(key);if (ref ! null) {Value value ref.get();if (value ! null) {return value;}}Value value ...; // 从文件、数据库等获取cache.put(key, new SoftReference(value));return value; }对象池对象池可以使用软引用来实现对象的复用当内存不足时垃圾回收器可能会回收已经被软引用关联的对象。这种方式可以避免创建过多的对象提高系统性能。例如 class ObjectPoolT {private final ListSoftReferenceT pool new ArrayList();private final SupplierT supplier;ObjectPool(SupplierT supplier) {this.supplier supplier;}T acquire() {for (int i 0; i pool.size(); i) {SoftReferenceT ref pool.get(i);T object ref.get();if (object ! null) {pool.remove(i);return object;}}T object supplier.get();return object;}void release(T object) {pool.add(new SoftReference(object));} }需要注意的是软引用不是绝对可靠的垃圾回收器并不保证在内存不足时一定会回收被软引用关联的对象因此在使用软引用时需要根据具体场景进行合理的设计和配置。 软引用的使用就是创建一个软引用对象 SoftReference 把 需要设置软引用的对象包装起来 如图所示我们就把一个 HashMap对象 包装在了一个软引用中当系统的内存不足的时候就会考虑回收这个HashMap对象。 3.弱引用  使用WeakReference类表示通过WeakReference包装一个对象。弱引用的对象在垃圾回收时无论内存是否充足都可能被回收 弱引用的使用场景 ThreadLocal 是一个线程级别的变量存储工具在多线程环境下可以实现线程间的数据隔离。每个线程都有自己独立的 ThreadLocal 变量副本可以在不同线程中存储不同的值而不会相互干扰。 通常情况下ThreadLocal 的实现会使用一个 Map 来存储每个线程对应的变量副本。为了避免内存泄漏ThreadLocal 对这些变量副本使用弱引用进行引用。 我们可以看到当我们在构造Map用的Entry的时候就用的是 虚引用 。  当一个线程结束或被回收时对应的 ThreadLocal 弱引用会被垃圾回收器回收进而导致对应的变量副本也会被回收。这样可以有效地释放线程相关的资源避免内存泄漏问题。 4.虚引用  使用PhantomReference类表示通过PhantomReference包装一个对象。虚引用主要用于检测对象是否已经被垃圾回收器标记为可回收在实际使用中很少直接操作虚引用对象。 虚引用Phantom Reference是Java中最弱的引用类型之一它几乎没有实际的用途。虚引用主要用于监控对象是否被垃圾回收器回收无法通过虚引用来获取对象的实例。 虚引用与其他引用类型不同它的主要作用在于提供了一种在对象被垃圾回收时能够在对象被销毁之前执行一些必要的清理操作的机制。虚引用通常会和引用队列ReferenceQueue一起使用。 在使用虚引用时需要创建一个引用队列并将虚引用对象与引用队列关联起来。当对象被垃圾回收器回收时会将虚引用放入引用队列中通过检查引用队列中的对象可以得知对象已经被回收。 总结 本文我们首先介绍了为什么需要堆回收以及它的作用。我们了解到Java堆是存储对象实例的地方而垃圾对象的存在可能导致内存泄漏和性能下降。因此堆回收是确保内存使用效率和应用程序性能的关键步骤。 其次介绍了一些与堆回收相关的重要概念如引用类型强引用、软引用、弱引用和虚引用、内存分配和对象生命周期。这些概念对于理解垃圾回收机制和如何优化内存使用至关重要。 在了解到如何判断堆中的 类 是否能被回收之后在下篇文章我们就要学习 如何 进行垃圾回收了也就是垃圾回收算法和垃圾回收器。 如果我的内容对你有帮助请点赞评论收藏。创作不易大家的支持就是我坚持下去的动力
http://www.pierceye.com/news/296532/

相关文章:

  • 提供手机网站制作公司网站建设与域名建设
  • 网站建设计入哪个明细科目网站公众号建设工具
  • 自己做公司网站难吗域名备案管局审核要多久
  • 电子商务网站建设花费百度公司的业务范围
  • 虹口网站建设公司在线观看视频网站怎么做
  • 哈尔滨市建设安全监察网站_首页新津网站建设
  • 安卓 网站整站下载网址导航怎么更换
  • 数据展示网站模板备案 非网站备案
  • 邯郸做网站推广找谁jsp做的网站代码
  • php网站开发怎么接私活全能医院网站管理系统
  • 观止网站建设10元建站
  • 什么网站做聚乙烯醇好的三亚旅游攻略
  • 建设网站目的直播间网站开发
  • 网站项目评价怎么在网站上做签到
  • 深圳网站建设制作哪家好长春网站开发培训
  • 模板下载网站网络公司网站开发
  • 广州市酒店网站设计重庆网站seo设计
  • p2p网站如何建设网站建设 源美设计
  • 电商网站建设图片ps网站首页设计图
  • 网站优化简历模板用土豆做美食的视频网站
  • 帮企业建设网站销售微信朋友圈广告在哪里做
  • 曲阜做网站的公司wordpress两个域名
  • 做设备租赁的网站如何把自己做的网站发布到网上
  • 做网站运营有前景吗关于网站建设意见和建议
  • 如何给网站的关键词做排名南海做网站公司
  • 仿站软件邢台手机网站建设价格
  • 学校网站开发与设计什么是网络营销促销?
  • 胶州网站搭建企业wordpress站内信群发
  • WordPress做的网站源代码网站备案失效
  • 承德网站制作与建设wordpress h5播放器