建站用什么搭建比较好电子商务网站建设技术解决方案

diannao/2026/1/21 20:14:16/文章来源:
建站用什么搭建比较好,电子商务网站建设技术解决方案,安平做网站的公司,景翔物流网站建设公司转载自 Java对象的引用类型 Java对象的引用类型有强引用#xff0c;软引用#xff0c;弱引用#xff0c;虚引用和FinalReference,提供这几种引用类型的主要目的#xff1a; 1.程序员可以通过不同的引用方式决定某些对象的生命周期#xff1b; 2.利用JVM的垃圾回收机制软引用弱引用虚引用和FinalReference,提供这几种引用类型的主要目的 1.程序员可以通过不同的引用方式决定某些对象的生命周期 2.利用JVM的垃圾回收机制对象可达性分析进行不同策略的垃圾回收 3.合理的利用软弱虚引用可以避免内存溢出等风险。 下面来详细谈谈这几种类型引用首先需要了解一下对象的可达性java对象不同生命周期可达性的状态也是不一样具体分为强可达软可达和弱可达幻象可达和不可达不可达基本上可以直接回收了这些可达性状态基本上对应着对象引用的类型关系 jvm依赖对象可达性来进行垃圾回收的。 1.强引用 创建一个对象并把这个对象赋给一个引用变量 Object object  new Object(); String str  hello; 强引用有引用变量指向时永远不会被垃圾回收JVM宁愿抛出OutOfMemory错误也不会回收这种对象。如果想中断强引用和某个对象之间的关联可以显示地将引用赋值为null这样一来的话JVM在合适的时间就会回收该对象。 2.引用 说一下Reference引用对象是后面提到的软弱虚Final的基类所以后面的几个引用类型都是基于它来扩展的如果需要使用最好配合带ReferenceQueue的构造函数进行使用Reference基于ReferenceQueue进行垃圾回收的。带queue的构造引用垃圾回收过程中该对象会经历Active-Pending等待GC-Enqueued(入队)-Inactive完全回收的状态这个对象放到队列里的作用就是当我们使用引用的时候可以查询这个队列来判断对象内存是否被回收。具体可以看一下源码。下面就介绍具体的子类引用类型。 3.软引用 如果一个对象具有软引用内存空间足够垃圾回收器就不会回收它如果内存空间不足了才会被GC。只要垃圾回收器没有回收它该对象就可以被程序使用。 3.1 简单使用 public class SoftReferenceTest {public static void main(String[] args) {SoftReference softReference  new SoftReference(new String(object));String softObject  (String) softReference.get();} } 3.2 软引用的特点 SoftReference的特点,在垃圾线程对这个Java对象回收前SoftReference类所提供的get()方法返回Java对象的强引用。另外一旦垃圾线程回收该Java对象之 后get()方法将返回null。Java虚拟机的垃圾收集线程对软可及对象和其他一般Java对象进行了区别对待软可及对象的清理是由垃圾收集线程根据其特定算法按照内存需求决定的。 具体策略垃圾收集线程会在虚拟机抛出OutOfMemoryError之前回收软可及对象而且虚拟机会尽可能优先回收长时间闲置不用的软可及对象对那些刚刚构建的或刚刚使用过的“新”软可反对象会被虚拟机尽可能保留。 3.3 配合ReferenceQueue 作为一个Java对象SoftReference对象除了具有保存软引用的特殊性之外也具有Java对象的一般性。所以当软可及对象被回收之后虽然这个SoftReference对象的get()方法返回null,但这个SoftReference对象已经不再具有存在的价值需要一个适当的清除机制避免大量SoftReference对象带来的内存泄漏。在java.lang.ref包里还提供了ReferenceQueue。当这个SoftReference所软引用的对象被垃圾收集器回收的同时ref所强引用的SoftReference对象被列入ReferenceQueue。也就是说ReferenceQueue中保存的对象是Reference对象而且是已经失去了它所软引用的对象的Reference对象。在任何时候我们都可以调用ReferenceQueue的poll()方法来检查是否有它所关心的非强可及对象被回收。利用这个方法我们可以检查SoftReference软引用对象是否被回收。 Test public void testRefQueue() {ReferenceQueue queue  new ReferenceQueue();//创建一个软引用new SoftReference(new String(xxx), queue);/*** GC后进行一次手动check并清除*/SoftReference remove  null;while ((remove  (SoftReference) queue.poll()) ! null) {// 清除refSystem.out.println(SoftReference 不为 null这里进行手动清除);remove.clear();} } 3.4 为什么需要使用软引用 在我们平时开发当中如果我们希望对象尽可能的存在时间长一点在内存允许的情况下一些可缓冲的对象就可以使用软引用的方式进行持有对象或者在一段时间内该对象使用的频次比较多过了热点时间就不会被使用这样我们可以大大减少没必要的对象再次创建就像使用缓存一样。所以软引用可用来实现内存敏感的高速缓存使用软引用能防止内存泄露增强程序的健壮性。软引用和弱引用都可以解决OOM问题。 例如软引用的一个使用例子维护一个用户缓存 /*** author zhangzuizui* date 2018/6/27 18:27*/ public class UserCache {private static UserCache userCache;// 用于Chche内容的存储private ConcurrentHashMapString,UserRef userRefsMap;// 垃圾Reference的队列private ReferenceQueueUser queue;private class UserRef extends SoftReferenceUser {private String name  zzz;public UserRef(User user, ReferenceQueueUser queue) {super(user, queue);name  user.getName();}}// 取得缓存器实例public static UserCache getInstance() {if (userCache  null) {userCache  new UserCache();}return userCache;}// 构建一个缓存器实例private UserCache() {userRefsMap  new ConcurrentHashMap();queue  new ReferenceQueueUser();}// 以软引用的方式对一个User对象的实例进行引用并保存该引用private void cacheUser(User user) {cleanCache();// 清除垃圾引用UserRef ref  new UserRef(user, queue);userRefsMap.put(user.getName(), ref);}// 依据所指定的userName重新获取相应User对象的实例public User getUser(String userName) {User em  null;// 缓存中是否有该User实例的软引用如果有从软引用中取得。if (userRefsMap.containsKey(userName)) {UserRef ref  (UserRef) userRefsMap.get(userName);em  (User) ref.get();}// 如果没有软引用或者从软引用中得到的实例是null重新构建一个实例// 并保存对这个新建实例的软引用if (em  null) {em  new User(userName);System.out.println(new user userName  userName);this.cacheUser(em);}return em;}// 清除那些所软引用的User对象已经被回收的UserRef对象private void cleanCache() {UserRef ref  null;while ((ref  (UserRef) queue.poll()) ! null) {userRefsMap.remove(ref.name);}}// 清除Cache内的全部内容public void clearCache() {cleanCache();userRefsMap.clear();System.gc();System.runFinalization();} } 4. 弱引用 4.1 弱引用的特点 弱引用WeakReference也是用来描述非必需对象的当JVM进行垃圾回收时无论内存是否充足都会回收被弱引用关联的对象。弱引用也可以用来操作敏感缓存的对象配合jvm的自身GC机制来实现自动回收内存的效果同样WeakReference也可以和引用队列一起使用。 public static void main(String[] args) {WeakReferenceString reference  new WeakReferenceString(new String(zzzz));System.out.println(reference.get());//通知GVM回收资源System.gc();System.out.println(reference.get());} 执行结果第二个输出结果是null这说明只要JVM进行垃圾回收被弱引用关联的对象必定会被回收掉。不过要注意的是这里所说的被弱引用关联的对象是指只有弱引用与之关联如果存在强引用同时与之关联则进行垃圾回收时也不会回收该对象软引用也是如此。 例如这样写 String string  new String(zzzz) WeakReferenceString reference  new WeakReferenceString(string); 这样两次System.out都会输出“zzzz” 4.2 为什么使用弱引用 一个长生命周期的对象如果对一个短生命周期的持有引用那么这个短什么周期的对象一直无法被GC这是出现内存泄露的一个原因所以为了避免这种情况我们可以运用WeakReference来持有该对象的引用这样就不会出现长生命周期的对象的持有导致内存溢出。比如HashMap持有很对Object对象其中有短周期的对象可以替换成虚引用。WeakHashMap就是运WeakReference实现的,从它entry子类中可以看出它的key是WeakReference包裹住的。当这个key对象本身不再被使用时伴随着GC的发生会自动把该key对应的entry都在Map中清除掉。 5. 虚引用 5.1 虚引用的特点 虚引用PhantomReference和前面的软引用、弱引用不同它并不影响对象的生命周期。如果一个对象与虚引用关联phantomReference.get()都是null则跟没有引用与之关联一样在任何时候都可能被垃圾回收器回收。 5.2 虚引用的作用 PhantomReference主要作为其指向的referent被回收时的一种通知机制它就是利用上文讲到的ReferenceQueue实现的。当referent被gc回收时可以通过这个通知机制来做额外的清场工作。因此有些情况可以用PhantomReference 代替finalize()做资源释放更明智。 public static void main(String[] args) {ReferenceQueueString queue  new ReferenceQueueString();PhantomReferenceString pr  new PhantomReferenceString(new String(hello), queue);System.out.println(pr.get());} 6. FinalReference FinalReference 引用类型主要是为虚拟机提供的提供对象被gc前需要执行finalize方法的对象 的机制。只是把访问权限改为package,因此我们是无法直接使用jVM会对那些实现了Object中finalize()方法的类实例化一个对应的FinalReference关于具体的细节有兴趣大家可以去看一下Finalizer的源码 ,其中包括Finalizer对象初始化守护线程jvm注册Finalizer对象实例化FinalReferenceGC后入ReferenceQueue队列并通知FinalizerThread去消费等操作。关于finalize方法的使用可以和该引用和串起来思考后边有必要再总结一篇关于finalize的文章。 7. 打印GC引用日志 -XX:PrintGCDetails 0.194: [GC (System.gc()) 0.196: [SoftReference, 0 refs, 0.0000125 secs]0.196: [WeakReference, 11 refs, 0.0000064 secs]0.196: [FinalReference, 37 refs, 0.0000138 secs]0.196: [PhantomReference, 0 refs, 0 refs, 0.0000058 secs]0.196: [JNI Weak Reference, 0.0000417 secs] 0.196: [Full GC (System.gc()) 0.197: [SoftReference, 0 refs, 0.0000115 secs]0.197: [WeakReference, 3 refs, 0.0000071 secs]0.197: [FinalReference, 0 refs, 0.0000077 secs]0.197: [PhantomReference, 0 refs, 0 refs, 0.0000074 secs]0.197: [JNI Weak Reference, 0.0000276 secs] 8. 总结 通过对SoftReferenceWeakReferencePhantomReferenceFinalReference 的介绍可以看出JDK提供这些类型的reference 主要是用来和GC交互的根据reference的不同让JVM采用不同策略来进行对对象的回收(reclaim)。softly-reachable的referent在保证在OutOfMemoryError之前回收对象weakly-reachable的referent在发生GC时就会被回收finalizer型的reference 主要提供GC前对referent进行finalize执行机制。同时这些reference和referenceQueue在一起提供通知机制PhantomReference的作用就是仅仅就是提供对象回收通知机制Finalizer借助这种机制实现referent的finalize执行SoftReference、WeakReference也可以配合referenceQueue使用实现对象回收通知机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求职网站怎么做关于网站建设的网站有哪些

在C#中,什么是委托(Delegate)?请简要说明委托的概念,并提供一个简单的示例说明如何使用委托。 答案: 委托的概念: 委托是一种类型,它允许将方法作为参数传递,使得可以…

电商设计网站哪个好哪些网站的简历做的比较好

蜂鸣器常用分类从两方面 声源类型:压电蜂鸣器( Piezoceramic Element Buzzers )、电磁蜂鸣器( Magnetic Buzzers ) 驱动类型:有源蜂鸣器( Indicators )、无源蜂鸣器( Transducers ) 一、电磁式蜂鸣器 无源电磁式设计电路 电磁蜂鸣器的线圈类似于电感&am…

东南亚cod建站工具住房和城乡建设部网站标准下载

本文介绍了OpenHub框架 -基于Apache Camel的新的开源集成解决方案。 本文回答了一些问题,为什么您应该关心另一个集成框架,强弱属性以及如何使用OpenHub启动新项目。 OpenHub框架是Apache Camel,但经过改进…… 当然,您只能使用A…

wordpress怎么设置跳站外链接网站型销售怎么做的

1.map是什么? map函数是Python中的一个内置函数,用于将一个函数应用到一个或多个可迭代对象的每个元素上,生成一个新的可迭代对象。它的一般形式是: map(function, iterable1, iterable2, ...)其中,function是一个函…

北京网站建设建设公司上海网站建设平台

Linear Decoders Deep Learning and Unsupervised Feature Learning Tutorial Solutions 以三层的稀疏编码神经网络而言,在sparse autoencoder中的输出层满足下面的公式 从公式中可以看出,a3的输出值是f函数的输出,而在普通的sparse autoenc…

广州商城建站搭建公司内部网站

1.概要这一系列将进行PrismWPF技术的实战讲解。实战项目内容选型为Email邮件收发的客户端(WeMail),项目结构简单方便大家理解。相关技术:C#、WPF、Prism软件开发环境:VS2019 、 .NET5 、 windows11需掌握技能&#xf…

利用业务时间做的网站与公司有关吗在百度上怎么搜到自己的网站

文章目录 openssl3.2 - xx_fetch函数参数名称字符串有效值列表概述笔记xx_fetch函数所在的头文件目录xx_fetch函数所在的头文件列表xx_fetch函数列表每个xx_fetch()API的字符串名称的有效值列表OSSL_DECODER *OSSL_DECODER_fetch();OSSL_ENCODER *OSSL_ENCODER_fetch();EVP_CIP…

dw中怎样做网站二级页面wordpress迁移后无法登录

ChatGPT与文心一言:两大AI助手智能回复、语言准确性、知识库丰富度比较 在现代科技飞速发展的时代,人工智能已经成为了我们生活中不可或缺的一部分。特别是在对话AI领域,两大巨头ChatGPT和文心一言以其出色的性能和广泛的应用引起了大家的广…

网站建设重要意义用自己的电脑做主机建网站

一、题目 新年第一题,避免老年痴呆! 题源:牛客 一个数组A中存有 n 个整数,在不允许使用另外数组的前提下,将每个整数循环向右移 M( M >0)个位置,即将A中的数据由(A0…

网站建设应遵循的原则小程序开发公司如何寻找客户

这是一款简单的数据库文档生成工具,主要实现了SQlServer生成说明文档的小工具,目前不够完善,主要可以把数据库的表以及表的详细字段信息,导出到Word中,可以方便开发人员了解数据库的信息或写技术说明文档。技术上主要采…

怎样做企业网站备案wordpress 菜单跳转

Itoh首先给出了传统解包裹算法的数学描述!。传统的相位解包裹操作是通过对空间相邻点相位值的比较来完成的。根据抽样定理,如果相邻采样点的相位差不超过z,则对应的相位解包裹处理是非常简单的,理论上以某点为起始点沿某一路径对包裹相位的差…

windows部署网站php电商平台seo

注意:本文下载的资源,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 使用Python进行数据挖掘项目开发,采用深度学习方法为图像中的物体进行分类,可以按照以下步骤进…

连云港网站建设案例策划公司起名

本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复【K8s实战】获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。有点类似于 Ubuntu 中的 APT 或 CentOS 中的 YUM。Helm…

采购网站有哪些wordpress 前台密码

Boost::Asio为同步和异步操作提供了并行支持,异步支持基于前摄器模式,这种模式的优点和缺点可能比只同步或反应器方法要低。让我们检查一下Boost::Asio是如何实现前摄器模式的,没有引用基于平台的细节。前摄器设计模式,改编自POSA…

怎么在网站投放广告网站上的动效是用ae做的

新建一个线程的时候是NEW状态 启动线程后是RUNNABLE状态

深圳大型网站建设长沙建站公司做网站

试卷代号:0064 2018-2019学年第一学期期末考试 外国文学专题试题 2019年1月 一、填空题(每空3分,共30分) 1.多丽丝莱辛是一位杰出的女作家,她于60年代创作的长篇小说是 。 2.作家的 …

做网站除了域名还用什么猪八戒网站建设

到py2exe的官网下载程序,注意对应的python版本,比如所用的python版本为2.7,那么就下载适配2.7版本的py2exe软件下载完成后安装(与普通软件安装方式相同) 2将要转换的python脚本放到Python文件夹内 在python的目录下面&…

加强国资集团网站建设微信开放平台如何注销

说明:本内容是工作用到的知识点整理,来自工作中和网络。 代码于Oracle9上测试。 作用: 1可用来进行数据资料行转列的功能 2可用来对数据进行判断,类似decode,但CASE语句在处理范围条件的时候会显得非常灵活。如果只是需要匹配少量…

西宁建设网站的公司wordpress s7

我们知道,可以通过如下设置将一个普通的Android工程转换成Android Library工程设置前后工程变化如下使用Ant编译时(通过android.bat update project 命令生成 build.xml),普通的Android工程会生成apk文件,而Android Library工程只生成jar文件…

比较出名的网站域名wordpress浏览历史

前言 fastapi是目前一个比较流行的python web框架,在大模型日益流行的今天,其云端部署和应用大多数都是基于fastapi框架。所以掌握和理解fastapi框架基本代码和用法尤显重要。 需要注意的是,fastapi主要是通过app对象提供了web服务端的实现代…