域名注册网站 不认证百度答主招募入口官网

张小明 2026/1/10 18:36:44
域名注册网站 不认证,百度答主招募入口官网,app制作平台收费标准,有专门做摄影画册的网站吗#x1f9d1; 博主简介#xff1a;CSDN博客专家#xff0c;历代文学网#xff08;PC端可以访问#xff1a;https://literature.sinhy.com/#/?__c1000#xff0c;移动端可微信小程序搜索“历代文学”#xff09;总架构师#xff0c;15年工作经验#xff0c;精通Java编… 博主简介CSDN博客专家历代文学网PC端可以访问https://literature.sinhy.com/#/?__c1000移动端可微信小程序搜索“历代文学”总架构师15年工作经验精通Java编程高并发设计Springboot和微服务熟悉LinuxESXI虚拟化以及云原生Docker和K8s热衷于探索科技的边界并将理论知识转化为实际应用。保持对新技术的好奇心乐于分享所学希望通过我的实践经历和见解启发他人的创新思维。在这里我希望能与志同道合的朋友交流探讨共同进步一起在技术的世界里不断学习成长。技术合作请加本人wx注明来自csdnforeast_sea1. 对象一定分配在堆中吗有没有了解逃逸分析技术在 Java 中并不是所有对象都严格在堆上分配内存虽然堆Heap是 Java 对象内存分配的主要区域。在某些情况下JVM 的即时编译器JIT可能会将对象分配在栈上这被称为逃逸分析Escape Analysis。也就是说如果编译器确定一个对象不会在方法外部使用即对象不会逃逸出方法的作用域那么该对象可以分配在栈上而不是堆上。什么是逃逸分析逃逸分析是指分析指针动态范围的方法它同编译器优化原理的指针分析和外形分析相关联。当变量或者对象在方法中分配后其指针有可能被返回或者被全局引用这样就会被其他方法或者线程所引用这种现象称作指针或者引用的逃逸(Escape)。通俗点讲当一个对象被 new 出来之后它可能被外部所调用如果是作为参数传递到外部了就称之为方法逃逸。除此之外如果对象还有可能被外部线程访问到例如赋值给可以在其它线程中访问的实例变量这种就被称为线程逃逸。逃逸分析有什么好处栈上分配如果确定一个对象不会逃逸到线程之外那么久可以考虑将这个对象在栈上分配对象占用的内存随着栈帧出栈而销毁这样一来垃圾收集的压力就降低很多。同步消除线程同步本身是一个相对耗时的过程如果逃逸分析能够确定一个变量不会逃逸出线程无法被其他线程访问那么这个变量的读写肯定就不会有竞争 对这个变量实施的同步措施也就可以安全地消除掉。标量替换如果一个数据是基本数据类型不可拆分它就被称之为标量。把一个 Java 对象拆散将其用到的成员变量恢复为原始类型来访问这个过程就称为标量替换。假如逃逸分析能够证明一个对象不会被方法外部访问并且这个对象可以被拆散那么可以不创建对象直接用创建若干个成员变量代替可以让对象的成员变量在栈上分配和读写。2. 内存溢出和内存泄漏是什么意思内存溢出俗称 OOM是指当程序请求分配内存时由于没有足够的内存空间满足其需求从而触发的错误。在 Java 中这种情况会抛出 OutOfMemoryError。内存溢出可能是由于内存泄漏导致的也可能是因为程序一次性尝试分配大量内存内存直接就干崩溃了导致的。内存泄漏是指程序在使用完内存后未能释放已分配的内存空间导致这部分内存无法再被使用。随着时间的推移内存泄漏会导致可用内存逐渐减少最终可能导致内存溢出。在 Java 中内存泄漏通常发生在长期存活的对象持有短期存活对象的引用而长期存活的对象又没有及时释放对短期存活对象的引用从而导致短期存活对象无法被回收。用一个比较有味道的比喻来形容就是内存溢出是排队去蹲坑发现没坑了内存泄漏就是有人占着茅坑不拉屎占着茅坑不拉屎的多了可能会导致坑位不够用。3. 能手写内存溢出的例子吗导致内存溢出OOM的原因有很多比如一次性创建了大量对象导致堆内存溢出比如说元空间溢出抛出java.lang.OutOfMemoryErrorMetaspace比如说栈溢出如果栈的深度超过了 JVM 栈所允许的深度将会抛出 StackOverflowError。堆内存溢出是最常见的 OOM 原因通常是因为创建了大量的对象且长时间无法被垃圾收集器回收导致堆内存耗尽。这就相当于一个房子里不断堆积不能被回收的杂物那么房子很快就会被堆满了。来通过代码模拟一下堆内存溢出的情况。publicclassHeapSpaceErrorGenerator{publicstaticvoidmain(String[]args){Listbyte[]bigObjectsnewArrayList();try{while(true){// 创建一个大约 10MB 的数组byte[]bigObjectnewbyte[10*1024*1024];bigObjects.add(bigObject);}}catch(OutOfMemoryErrore){System.out.println(OutOfMemoryError 发生在 bigObjects.size() 对象后);throwe;}}}通过 VM 参数设置堆内存大小为-Xmx128M然后运行程序。可以看到堆内存溢出发生在 11 个对象后。4. 内存泄漏可能由哪些原因导致呢比如说①、静态的集合中添加的对象越来越多但却没有及时清理publicclassOOM{staticListlistnewArrayList();publicvoidoomTests(){ObjectobjnewObject();list.add(obj);}}②、单例模式下对象持有的外部引用无法及时释放③、数据库、IO、Socket 等连接资源没有及时关闭try{Connectionconnnull;Class.forName(com.mysql.jdbc.Driver);connDriverManager.getConnection(url,,);Statementstmtconn.createStatement();ResultSetrsstmt.executeQuery(....);}catch(Exceptione){}finally{//不关闭连接}④、变量的作用域不合理classSimple{Objectobject;publicvoidmethod1(){objectnewObject();//...其他代码//由于作用域原因method1执行完成之后object 对象所分配的内存不会马上释放}}⑤、hash 值发生变化但对象却没有改变这也是为什么 String 被设计成不可变对象的原因之一就是因为假如 String 的哈希值发生了改变但对应的值没变就导致 HashMap 中的对象无法被及时清理⑥、使用完 ThreadLocal 没有使用 remove 方法来进行清除。5. 有没有处理过内存泄漏问题是如何定位的有内存泄漏是指程序在运行过程中由于未能正确释放已分配的内存导致内存无法被重用从而引发内存耗尽等问题。当时在做技术派项目的时候由于 ThreadLocal 没有及时清理导致出现了内存泄漏问题。常用的可视化监控工具有JConsole、VisualVM、JProfiler、Eclipse Memory Analyzer (MAT)等。也可以使用 JDK 自带的 jmap、jstack、jstat 等命令行工具来配合内存泄露问题的排查。严重的内存泄漏往往伴随频繁的Full GC所以排查内存泄漏问题时可以从 Full GC 入手。第一步使用jps -l查看运行的 Java 进程 ID。第二步使用top -p [pid]查看进程使用 CPU 和内存占用情况。第三步使用top -Hp [pid]查看进程下的所有线程占用 CPU 和内存情况。第四步抓取线程栈jstack -F 29452 29452.txt可以多抓几次做个对比。29452 为 pid顺带作为文件名。看看有没有线程死锁、死循环或长时间等待这些问题。第五步可以使用jstat -gcutil [pid] 5000 10每隔 5 秒输出 GC 信息输出 10 次查看YGC和Full GC次数。通常会出现 YGC 不增加或增加缓慢而 Full GC 增加很快。或使用jstat -gccause [pid] 5000输出 GC 摘要信息。或使用jmap -heap [pid]查看堆的摘要信息关注老年代内存使用是否达到阀值若达到阀值就会执行 Full GC。如果发现Full GC次数太多就很大概率存在内存泄漏了。第六步生成dump文件然后借助可视化工具分析哪个对象非常多基本就能定位到问题根源了。执行命令jmap -dump:formatb,fileheap.hprof 10025会输出进程 10025 的堆快照信息保存到文件 heap.hprof 中。第七步可以使用图形化工具分析如 JDK 自带的VisualVM从菜单 文件 装入 dump 文件。然后在结果观察内存占用最多的对象找到内存泄漏的源头。6. 有没有处理过内存溢出问题有内存溢出也就是 Out of Memory是指当程序请求分配内存时由于没有足够的内存空间满足其需求从而触发的错误。当时在做技术派的时候由于上传的文件过大没有正确处理导致一下子撑爆了内存程序直接崩溃了。当发生 OOM 时可以导出堆转储Heap Dump文件进行分析。如果 JVM 还在运行可以使用 jmap 命令手动生成 Heap Dump 文件jmap-dump:formatb,fileheap.hprofpid生成 Heap Dump 文件后可以使用 MAT、JProfiler 等工具进行分析查看内存中的对象占用情况找到内存泄漏的原因。如果生产环境的内存还有很多空余可以适当增大堆内存大小例如-Xmx4g参数。或者检查代码中是否存在内存泄漏如未关闭的资源、长生命周期的对象等。之后我会在本地进行压力测试模拟高负载情况下的内存表现确保修改有效且没有引入新的问题。7. 什么情况下会发生栈溢出补充栈溢出StackOverflowError发生在程序调用栈的深度超过 JVM 允许的最大深度时。栈溢出的本质是因为线程的栈空间不足导致无法再为新的栈帧分配内存。当一个方法被调用时JVM 会在栈中分配一个栈帧用于存储该方法的执行信息。如果方法调用嵌套太深栈帧不断压入栈中最终会导致栈空间耗尽抛出 StackOverflowError。最常见的栈溢出场景是递归调用尤其是没有正确的终止条件导致递归无限进行。classStackOverflowExample{publicstaticvoidrecursiveMethod(){// 没有终止条件的递归调用recursiveMethod();}publicstaticvoidmain(String[]args){recursiveMethod();// 导致栈溢出}}另外如果方法中定义了特别大的局部变量栈帧会变得很大导致栈空间更容易耗尽。publicclassLargeLocalVariables{publicstaticvoidmethod(){int[]largeArraynewint[1000000];// 大量局部变量method();// 递归调用}publicstaticvoidmain(String[]args){method();// 导致栈溢出}}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

佛山微信网站建设哪家好用dw做的网页如何上传到网站

Hugging Face镜像与GPT-OSS-20B的协同优化实践 在大模型时代,获取一个能跑得动、响应快、部署省心的开源语言模型,是无数开发者梦寐以求的目标。尤其是当主流闭源模型如GPT-4被API墙和高昂成本牢牢锁住时,社区对“类GPT体验”的本地替代方案…

张小明 2026/1/9 20:22:05 网站建设

栖霞网站定制建免费的网站

去耦电容在PCB中的布局原理:从“放几个就行”到精准设计的跃迁你有没有遇到过这样的情况?电路板明明按照原理图配齐了去耦电容——10μF、0.1μF、甚至每个电源引脚都加了MLCC,结果系统一跑高速任务就复位;示波器一测,…

张小明 2026/1/10 8:29:10 网站建设

网站 优化 件淘宝客推广有效果吗

第一章:智普Open-AutoGLM 沉思 在人工智能与自动化深度融合的当下,智普推出的 Open-AutoGLM 项目为大语言模型的自主推理与任务执行开辟了新路径。该项目结合 GLM 大模型的强大语义理解能力,赋予机器在复杂环境中自我规划、工具调用与反思优化…

张小明 2026/1/10 5:00:51 网站建设

外国人做美食视频网站咸阳营销型网站建设

用一块ESP32-CAM实现远程拍照自动上传,打造你的极简监控系统你有没有过这样的需求:想看看家里猫在干什么?想知道温室里的植物长势如何?或者只是想给自家门口装个“电子眼”,又不想花大几千买专业摄像头?其实…

张小明 2026/1/9 14:30:09 网站建设

电商和网站设计哪个好做网咖的网站

PaddlePaddle MOT多目标跟踪:SORT与DeepSORT对比 在城市交通监控中心的大屏上,数十辆汽车正穿梭于交叉路口的实时画面中。系统不仅需要准确识别每一辆车的位置,更要确保它们在整个视频序列中拥有稳定的ID——即便被公交车短暂遮挡、或在弯道后…

张小明 2026/1/10 1:06:15 网站建设

过期域名查询网站网站建设相关资料文件

Halo Docker 迁移方法 以下是针对使用Docker部署的Halo博客(假设Halo 2.x版本,数据库为默认H2或外部MySQL)迁移到新服务器的详细方案。迁移目标是实现全站数据迁移,包括文章、评论、附件、主题、插件、配置和数据库。方案基于Halo…

张小明 2026/1/9 20:22:08 网站建设