公司建设网站需要固定ip吗去哪个网站可以做写手

pingmian/2026/1/26 5:38:05/文章来源:
公司建设网站需要固定ip吗,去哪个网站可以做写手,旅游网站建设答辩ppt,公司装修便宜1.如何判断对象可以回收 1.1引用计数法 只要一个对象被其他对象所引用#xff0c;就要让该对象的技术加1#xff0c;某个对象不再引用其#xff0c;则让它计数减1。当计数变为0时就可以作为垃圾被回收。 有一个弊端叫做循环引用#xff0c;两个的引用计数都是1#xff…1.如何判断对象可以回收 1.1引用计数法 只要一个对象被其他对象所引用就要让该对象的技术加1某个对象不再引用其则让它计数减1。当计数变为0时就可以作为垃圾被回收。 有一个弊端叫做循环引用两个的引用计数都是1导致不能作为垃圾回收会造成内存泄露。 java虚拟机没有采用该算法。 1.2可达性分析算法 该算法需要先确定根对象根对象的定义就是那些肯定不能当成垃圾被回收的对象。 在垃圾回收之前会先对堆中的所有对象进行扫描看每一个对象是否被根对象直接或者间接的引用。是的话则该对象不能被回收否则的话该对象可以被作为垃圾将来被回收。 Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象看是否能够沿着 GC Root对象 为起点的引用链找到该对象找不到表示可以回收哪些对象可以作为 GC Root ? 使用eclipse提供的一个工具Memory Analyzer(MAT) 一个快速且多功能的java堆分析工具。 MAT MemoryAnalyzer中文使用指南_mat 汉化_Louis.No1的博客-CSDN博客 案例 先使用jps查看进程id,然后用jmap抓取进程快照但是要使用MAT还要将快照转换成文件使用下面命令 jmap -dump:formatb,live,file1.bin 21384 format是指定转储文件的格式b是二进制格式live是抓取快照时只抓取存活类型不管被回收的并且live参数会在抓取前进行一次垃圾回收。file参数决定要把内存快照存为哪个文件。最后跟上进程id 在代码中抓取了两次一次在置集合为空之前一次在置集合为空之后。 置为空之前 有系统类 诸如Object,HashMap,String,等虚拟机运行过程中核心的类对象都可以作为GD root对象 第二类是java虚拟机在执行时调用的操作系统方法操作系统执行时应用的java对象也是可以作为根对象。 第四类是Busy Monitor synchronized锁住的对象不会被当做垃圾 第三类就是活动线程中使用的一些对象 线程运行时产生的栈帧说产生的东西可以作为根对象 这里用到的局部变量所引用的对象都可以作为根对象。 引用变量和对象是两个东西 list1是一个引用后面引用的对象是存在堆里面的根对象也是指后面堆中的对象。而不是list1这个局部变量引用。 下图中的ArrayList 就是当前活动线程执行过程中局部变量所引用的对象可以作为根对象。 以及下面的那个方法参数引用的字符串数组对象String[0]也是根对象。 虚拟机栈中引用对象方法区中类静态属性引用对象方法区常量引用对象本地方法栈引用对象 置为空之后 再次查找已经没有ArrayList了因为list1置为空ArrayList不再被引用已经被回收了。 1.3四种引用 常见的应该有5种引用。 图中的实线箭头表示强应用虚线这是软弱虚终结器引用。 没有使用xxxReference这个类包一层创建的实例对象都是强引用类型的对象因为后面会看到非强引用对象的创建是带有xxxReference类先包一层再创建的 我们平时学习的就是四种的第一级的强引用说白了就Object o new Object()四个引用分别是强引用、软引用、弱引用和虚引用请记住它们的顺序!因为这是它们对内存的敏感程度! 等级 强 软 弱 虚 1.强引用 Object o new Object() new一个对象通过复制给一个变量则变量强引用了该对象。 特点: 沿着GCRoot的引用链可以去找到它就不会被垃圾回收。 在上面图中沿着C对象实线可以找到A1对象则A1对象无法被回收。 当如下图所示没有GCRoot直接或者间接应用了A1时A1才能被回收。 2.软引用 3.弱引用 上图的A2,A3两个对象只要没有被直接的强引用所引用当垃圾回收发生时都可能被回收。 上面图中A2,A3就是间接的被C对象间接的引用了通过一个软引用对象和一个弱引用对象这是间接的途径并且又被B对象强引用了这时不会被回收。 当B对象不再引用A2A3时A2,A3就可以被回收了。 A2回收时刻当垃圾回收发生后内存依旧不足时回收 A3回收时刻:  当垃圾回收发生时不管内存充足与否都会把弱引用的对象回收。 引用队列 软弱引用还可以配合一种叫做引用队列的一起工作。 当软引用的对象被回收后软引用自身也是一个对象。如果创建时给它分配了一个引用队列那么现在软引用会进入该队列。弱引用也是一样会进入弱引用的引用队列。 原因: 软引用和弱引用自身都要占用一定的内存如果要对它们的内存做进一步释放需要使用应用队列将它们释放。 4.虚引用 与软弱引用不同虚终应用必须配合引用队列使用。它们创建时就会关联一个引用队列。 工作:  在直接内存部分创建一个ByteBuffer实现类对象时就会创建一个名为Cleaner的虚引用对象。 ByteBuffer分配到一片直接内存之后会将直接内存地址传递给虚应用对象。 当ByteBuffer不再被强引用所引用后会被垃圾回收。 但是直接内存不归垃圾回收管虚引用对象进入引用队列后会定时由一个线程检查是否有虚引用入队有的话会调用Cleaner中的freeMeory方法将直接内存释放。 5.终结器引用 所有的java对象都会继承自Object父类都会有一个finallize()终结方法。 当这个A4对象重写了终结方法并且没有被强引用所引用时就可以被当成垃圾回收。 在A4被回收前会先将终结器引用对象放入引用队列再由一个优先级很低的线程在某些时刻过来检查并找到要作为垃圾回收的A4对象并且调用A4的finallize方法调用完后的下一次垃圾回收就会回收掉A4. 由于线程优先级很低会导致A4对象迟迟无法被释放。不推荐使用finallize释放资源。 软引用——应用 上面代码是一个listh集合然后不断往里面添加byte数组用-Xmx20m设置了堆内存大小20m. 报错如下。 在业务场景中那4mb资源可能不是核心资源当其过多时使用强引用来引用会到值内存溢出。 对于不重要的资源需要在内存紧张时将其占用资源释放以后再用时再读取。 这里就要用到软引用。 在上面的这段代码中list不再直接引用byte数组而是在中间加了个软引用对象。 现在list对SoftReference是强引用 SoftReference对byte是软引用。 这次就不会出现堆内存溢出。 在循环时调用软引用的get去取时还会有等到循环结束后就已经取不到了 前四个元素都变成了null,只剩最后一个。 这里通过打印垃圾回收的详细参数演示。 -XX:PrinyGCDetails   -verbose:gc 在第三次循环时就已经出现内存不足发生了一次minor GC回收回收了新生代第四次之后又来了一次 minor GC但是发生效率不高4696k-4696k,于是来了一次Full GC把老年代也回收了。 但是发现效率还是低于是触发软引用的垃圾回收。 然后新生代4549k-0k,老年代12500k-639k.这里把前四个软引用的byte数组都回收了。  软引用——引用队列 在上面最后一次循环前四个都是null了已经没有保留的必要。 所以这里要把软引用本身也清理掉配合引用队列使用。 这里的pollnull是指这个软引用本身不为空而不是引用的值不为空。 只有byte数组被回收的软引用才会进这个队列所以只有4个需要被回收的软引用在这里。 最后再次循环就只剩一个在list里面了。 弱引用——应用 弱引用的使用和软引用类似。这里弱引用的byte对象在每次GC是都会被回收。 导致最后只剩四个byte数组。 加大循环次数我们可以得知前三个对象没有被垃圾回收掉是因为晋升到了老年代。 加到6个对象时第四个和第五个因为是新生代所以被回收了。 增大到10个时最后一次直接回收了前面9个byte数组因为弱引用本身也有内存导致放不下引发了一次fullGC去回收了老年代的byte数组。 因为年轻代已经放不下其他对象了后续对象都是放到老年代。? 这里有点乱后续再来看。 2.垃圾回收算法 2.1标记清除 第一个阶段是标记没有被根对象引用的对象。 第二阶段要将垃圾所占的空间释放这里是将垃圾的起始结束地址放入一个空闲地址列表里面下次分配新对象时会到空闲列表中找有没有一块足够的空间容纳新对象。这里和OS的内存管理很像。 优点 速度快 缺点: 容易产生空间不连续的内存碎片。  2.2标记整理 标记过程和上面一样但是第二个阶段会使用紧凑技术整理。 优点 没有碎片 缺点: 移动过程效率低  2.3复制 将内存区划分成大小相同的两块区域其中TO始终空闲。 第一个阶段也是标记第二阶段如下图所示将存活对象移动到TO区域并清理from区域 第三阶段交换from和to区域是To总是保持空闲。 优点: 不会产生碎片 缺点: 会占用双倍内存空间。 3.分代垃圾回收 java虚拟机不会采用单独的一种算法而是三种协同工作具体实现就是分代的垃圾回收机制。 划分如下有新生代和老年代。 老年代放的是长时间使用的对象。老年代的垃圾可以等到内存不足时调用fullGC清理。 新生代放的是用完就可以丢弃的对象。 永久代就是jvm进程在运行中永远不会删除的内存区域也就是方法区。 针对生命周期不同采用不同的策略老年代的垃圾回收很久才有一次新生代的GC较为频繁。 分代垃圾回收机制工作 ​​​​​​​ 新创建的对象会被分配到伊甸园。 当伊甸园放不下后会出发一次垃圾回收叫做MinorGC,用可达性分析算法去标记。 标记完后会把存活对象放到幸存区TO中并且让其寿命1。伊甸园剩下的都会回收。 然后幸存区from和to就会交换位置。  然后放着放着伊甸园又满了这时出发第二次垃圾回收。同时会去幸存区From找是否有需要回收的。 然后把伊甸园和From中存活的对象放入TO中再次加1然后调换From和To.并把新对象放入伊甸园。  当幸存区的对象寿命超过预值后会晋升到老年代当中。 当出现下面的情况一个新对象在新生代和From和老年代都放不下的时候会触发一次full GC. fullGC会出发新生代和老年代的清理。 minor gc引发的 stop the world会把其他用户的线程都暂停因为垃圾回收时会发生对象地址的改变,其他线程在根据原来的地址是找不到的。 新生代触发的STW时间较短。 老年代触发的STW时间更长。 ​​​​​​​​​​​​​ 如果full gc之后还是空间不足就会报内存溢出错误。 Minor GC 与 Full GC 的触发条件 Minor GC  Eden 区没有足够的空间分配给新创建的对象. Full GC 老年代空间不足这个很简单就是字面上的不足例如大对象不停的直接进入老年代最终造成空间不足。方法区空间不足。Minor GC 引发 Full GC 年轻代的对象在经历Minor GC 过后部分对象存活对象或全部存活对象会进入老年代。 3.1相关VM参数 幸存区比例默认是8有10mb时8mb是伊甸园剩下的2mb是幸存区。 分析 参数中设置垃圾回收器为SerialGC虚拟存储器比例不会动态调整。 运行后 new generation新生代  tenured generation老年代  Metaspace老年代 可以看见新生代里面有eden from to区域按照8:1:1 按照上面代码往新生代放入7mb的byte数组但是eden只有8mb并且已经用了28%则一定会触发垃圾回收。下面只显示GC表示是新生代的GC,Full GC则是老年代的GC. 如下所示因为触发了垃圾回收from区已经有东西了。 在7mb的基础上再一次放两个512kb放一次没满放两次就溢出了所以又触发了一次垃圾回收。​​​​​​​ 并且这里很多对象晋升到了老年代。因为内存紧张所以没到15次就让一部分对象及晋升到老年代这里直接把7mb的放入了老年代。 大对象_oom 这里直接一个大对象超过了新生代的容量不会触发垃圾回收会直接进入老年代。 再放一个8mb的大对象这次没有地方能放得下了就会直接内存溢出。 再内存溢出前还会尝试进行垃圾回收 先是minor GC不行然后Full GC也不行就直接报错了。 误区: 在一个线程中内存溢出了并不会导致整个线程结束。 当一个线程抛出OOM异常后它所占据的内存资源会全部被释放掉从而不会影响其他线程的运行但是这里释放不了老年代里的8mb字节对象被list引用着。 子线程里放入大对象时发现继续放入会造成内存泄漏所以最后这个8mb对象就没有放入但还是会给程序反馈报异常。主线程依然可以使用堆内存。 4.垃圾回收器 后两种需要多核CPU才能充分发挥性能。区别在响应时间优先是让每次时间最短发生5次每次0.1,。吞吐量是单位时间内最短一个小时发生两次每次0.2最终单位时间内0.4秒少于0.5单位时间内垃圾回收时间占比越低吞吐量占比越高。 4.1串行 Serial运行在新生代使用复制算法SerialOld生活在老年代使用标记整理算法。 如上图所示多核CPU在运行时发生内存不足了要让所有线程在一个安全点停下。 因为Serial和SerialOld都是单线程的垃圾回收器所以只有一个线程在进行垃圾回收。 4.2吞吐量优先 在jdk1.8中默认使用的就是ParallelGC,并行的垃圾回收器后面那个加了个Old是老年代用的回收算法上和串行的使用一样。开启其中一个另一个也会自动开启。 这里会开启多个垃圾回收线程进行垃圾回收默认与CPU核数相关。 每次发生垃圾回收时CPU占用率如下所示因为是动用了所有核去进行垃圾回收。 这里垃圾回收线程数可以通过参数设置修改 相关参数 采用自适应的大小调整策略调整新生代中的大小伊甸园和幸存区的比例晋升预值等。 可以根据设定目标尝试调整堆的大小来达到期望目标。 1是吊证吞吐量的目标垃圾回收时间和总时间的占比。公式1/(1ratio).ratio默认值是99有 1/(100) 0.01则说的是垃圾回收时间不能超过总时间的百分之一。超过的话一般会把堆的大小增大使垃圾回收发生次数减少使的总时间下降。 2是最大暂停毫秒数,默认是200mx2和1冲突1会增大垃圾回收的总时间使其可能超过200ms。而且2会将堆的大小减小防止因为堆过大导致垃圾回收时间过长。 ​​​​​​​ 4.3 响应时间优先CMS 要开启该垃圾回收器虚拟机参数为UseConcMarkSweepGC ConcConcurrent并发 Mark标记 Sweep清除。 基于标记清除算法的并发垃圾回收器。垃圾回收器在工作的同时其他用户线程也能进行在垃圾回收的部分阶段不需要Stop the World. 这是工作在老年代的垃圾回收器。 与其对应的是ParNewGC,工作在新生代的垃圾回收器。 有时CMS并发失败的时候会切换到SerialOld垃圾回收器。 如上图所示运行过程中老年代发生内存不足CMS开始执行初始标记标记根对象暂停时间短的工作需要stop the world并会阻塞用户线程。 并发标记阶段用户线程恢复运行并且CMS可以把剩余的垃圾找出来. 重新标记阶段需要stop the world,因为并发标记阶段用户线程可能会产生新对象改变对象的引用对垃圾回收有干扰。 最后并发清理阶段就又可以并发运行了。 细节: CMS受到两个参数影响一个是并行的垃圾回收线程数第二个是并发的垃圾线程数一般要设置为并行线程总数的四分之一。并行是4并发是1时有4个CPU会工作有一个用来执行垃圾回收线程。 CMS对CPU的占用没有上面的高因为这里只有四分之一的CPU用去垃圾回收但用户工作线程只能占用原本3/4的线程数量对应用程序吞吐量有影响。 在其他用户线程运行的时候其他用户线程可能会产生新的垃圾称为浮动垃圾这些要等到下一次才能回收。要预留空间保存垃圾上面的参数就是用于控制什么时候执行CMS垃圾回收。 等于80时只要老年代的内存占用达到80%时就进行垃圾回收。 用于在重新标记阶段的特殊场景: 新生代的对象引用老年代的对象在重新标记阶段做可达性分析时对性能影响很大。 原因: 新生代的对象创建个数较多并且很多都是要作为垃圾的就算去找老年代也是要被回收多做了无用的查找功。 用上面的参数在重新标记前对新生代用UseParNewGC做垃圾回收可以减少存活对象减轻重新标记阶段的压力。 特点: CMS采用标记清除算法可能产生较多的内存碎片。导致将来分配对象时新生代内存不足结果老年代也不足造成并发失败。使得垃圾回收器退化为SerialOld做一次整理使得碎片少了才能继续工作。 一旦有垃圾回收失败的问题垃圾回收时间也会大幅上升。 未完待续........

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

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

相关文章

深圳快速网站制作哪家公司好泰安房产管理局官网

在之前的一篇文章(python网络编程-udp)中实现了一个简单的udp聊天器,只能在单线程下进行收发数据,在学习完多线程之后,实现一个能同时收发数据的udp聊天器。 说明: 编写一个有2个线程的程序线程1用来接收数…

台州网站策划项目建设综述

目录 一、彻底删除VMware 二、VMware-17虚拟机安装 三、MobaXterm 安装 四、Centos 发行版 7.9的安装 五、rockys 9.1的安装 六、ubuntu2204的安装 一、彻底删除VMware 在卸载VMware虚拟机之前,要先把与VMware相关的服务和进程终止 1. 在windows中按下【Windo…

码云pages做静态网站百度收录链接

一、准备知识 headless services一般结合StatefulSet来部署有状态的应用,比如kafka集群,mysql集群,zk集群等,也包括本文要部署的consul集群。 0、consul集群 consul集群的分布式协议算法采用的是raft协议,这意味着必…

扬州市城市建设监察支队网站赣县区建设局网站

遇到的问题: 在使用 RedisTemplate 连接 Redis 进行操作的时候,发生了如下报错: 测试代码为: 配置文件: 问题根源: redis没有添加端口映射解决方案: 删除原来的redis容器,添加新…

番禺网站建设gzhchl网站建设计划建议

typing Python的typing模块是Python 3.5版本引入的一个标准库,它提供了一种在Python代码中显式声明类型的方式,可以帮助开发人员更好地理解和使用Python的类型系统。 使用typing模块,您可以在函数、类、变量等地方添加类型注解,以…

企业网站设计好的缺点有哪些百度关键词排名联系方式

解析 熟练和固化在有些时候是等价的。 一个看起来喜闻乐见的模型。 n2n^2n2 信息量你在逗我… 结果是:点数 n2n^2n2 TLE,边数 n2n^2n2 AC。 一种之前所没有见过的打开方式。 还是考虑最小割模型,点 iii 向原点连一条 AiA_iAi​ 的边&#xf…

宁波网站建设高端莱芜有名的痞子是谁

一、常识理论题 1、 简述嵌入式操作系统有哪些,你用过哪几种,简述其特点、优势及劣势?(5分) 2、 请描述控制及提高嵌入式软件质量有哪些办法,在开发过程中怎么才能保证嵌入式软件的可靠性?(5分)…

电子商务网站平台建设策划做棋牌推广网站违反不

长期以来,周界防范安防系统在大型园区、工厂、社区、机场、火车站站台、重点单位等领域应用较为广泛和常见。随着AI人工智能等新兴技术的快速发展与落地应用,通过AI智能检测与视频智能分析技术,现代化的周界安防系统可以做到全天候快速、准确…

网站建设详情页打开全网搜索

minio sdk使用自签名https证书错误处理 1.问题描述1.1 报错日志1.2 maven 依赖配置1.3 当前spring MinioClient配置 2.问题分析3.问题解决3.1 使用受信任的证书3.2 忽略证书验证3.2.1 minio客户端3.2.2 minio sdk 忽略证书验证3.2.2.1 拓展: 补充minioclient请求日志 4. 问题总…

自适应网站建设哪家好试客网站 源码

1 知识图谱应用场景 1、数据可视化 2、基于图谱的问答系统 3、基于图谱的关系推理 4、便捷的关系查询,给模型提供更多数据特征 2 知识图谱的构建 非结构化数据源中的实体识别:一般来说是一个sequence labeling的任务。 非结构化数据源中的关系抽取&am…

网站编辑超链接怎么做越秀金融大厦地址

从 Windows Server 2008 开始,管理员可以选择安装具有特定功能但不包含任何不必要功能的 Windows Server 的最小安装服务器核心(Server Core),它为一些特定服务的正常运行提供了一个最小的环境,从而减少了其他服务和管理工具可能造成的***和风…

招聘网站开发工程师在线做爰视频网站

http://blog.csdn.net/vshuang/article/details/39647167 Android 内存管理 &Memory Leak & OOM 分析 单个应用可用的最大内存 Android设备出厂以后,java虚拟机对单个应用的最大内存分配就确定下来了,超出这个值就会OOM。这个属性值是定义在…

福州网站建设营销q479185700刷屏ssh wordpress

实验背景 某公司总部在厦门,北京、上海都有分部,网络结构如图所示: 一、网络连接描述: 厦门总部:内部网络使用SW1、SW2、SW3三台交换机,SW1为作为核心交换机,SW2、SW3作为接入层交换机&#x…

做移动网站开发做钓鱼网站会被抓判刑吗

分类:声卡驱动问题:设备管理器中声卡驱动安装不正确描述:电脑没有声音,有部分朋友是因为声卡驱动没有正确安装,除了我们常见到的设备管理器出现黄色感叹号之外,另一种情况就是让一般人很难发现的问题&#…

莱芜招聘的网站中国建筑装饰网 郭金辉

干程序这行比较辛苦的就是要随时更新自己的知识。闷~~为了让自己能够更加深入的学习GUN和LINUX。在简单了解了shell以后决定学习Python。--------&#xff0d…

网站开发的软件介绍建设微信商城网站的公司

广州大专自主招生有哪些学校自主招生又称自主选拔,是高校选拔录取工作改革的重要环节。包括国家重点大学自主招生与高职自主招生两大类。以下小编为大家整理了广州大专院校自主招生的学校,希望对大家有所帮助!广东专科自主招生学校名单1、广东…

大连小型网站建设北京代理记账财务公司

QWebChannel 是 Qt 框架中用于在 Web 页面和 Qt 应用程序之间进行通信的类。 QWebChannel 类提供了一种机制,使得 Web 页面可以与 Qt 应用程序进行双向通信。通过 QWebChannel,可以将 Qt 应用程序中的对象暴露给 Web 页面,并通过信号和槽机制…

如何用wordpress做一个企业网站如何创办公司

从源码学习final的使用 final的作用 ​ final字面意思,意为最终的、不可变的。在Java中,final可以用来修饰类、方法和变量,可以分别起到不同的作用。 final修饰类:表示该类不可以被继承;final修饰方法:表…

做市场的逛的网站重庆梁平网站建设哪家便宜

微信公众号:有宝物的柜子编辑:落水无波2020-06-28 原创有时候在分析一些数据时,既需要观察整体又需要局部观测,那么怎么才能做到同时查看呢,就类似上面这样。这样就很容易的去发现有没有峰位偏移,同时查看与…