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

湛江哪里有建网站产品推广网站

湛江哪里有建网站,产品推广网站,生日网页制作教程,仓库改造类网站怎么做全文目录: 开篇语第一部分:Java内存模型(JMM)简介1.1 共享变量的可见性:volatile关键字 第二部分:垃圾回收的基本原理2.1 简单的垃圾回收示例 第三部分:GC的种类与调优3.1 配置GC日志 第四部分&…

全文目录:

    • 开篇语
    • 第一部分:Java内存模型(JMM)简介
      • 1.1 共享变量的可见性:`volatile`关键字
    • 第二部分:垃圾回收的基本原理
      • 2.1 简单的垃圾回收示例
    • 第三部分:GC的种类与调优
      • 3.1 配置GC日志
    • 第四部分:内存泄漏的排查与解决方法
      • 4.1 内存泄漏示例与解决
      • 4.2 解决内存泄漏
    • 总结
    • 文末

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

第一部分:Java内存模型(JMM)简介

1.1 共享变量的可见性:volatile关键字

volatile关键字用于保证变量的可见性,即一个线程修改的变量对其他线程立即可见。

示例代码:

public class VolatileExample {private static volatile boolean flag = false;public static void main(String[] args) {// 启动两个线程Thread thread1 = new Thread(() -> {try {Thread.sleep(1000);flag = true;  // 设置flag为trueSystem.out.println("Flag is set to true.");} catch (InterruptedException e) {e.printStackTrace();}});Thread thread2 = new Thread(() -> {while (!flag) {// 一直等待直到flag变为true}System.out.println("Flag is now true!");});thread1.start();thread2.start();}
}

解释:

  • volatile确保thread2能够及时看到flag的修改,避免了线程1对flag的修改对线程2不可见的问题。

第二部分:垃圾回收的基本原理

2.1 简单的垃圾回收示例

在Java中,垃圾回收是由JVM自动管理的,无需开发者显式释放内存。以下是一个简单的示例,演示了对象的创建与垃圾回收。

示例代码:

public class GarbageCollectionExample {public static void main(String[] args) {// 创建对象Employee emp = new Employee("Alice");emp = null;  // 将emp引用设置为null,标记对象为可回收// 建立一个垃圾回收请求System.gc();  // 强制垃圾回收(只是建议,JVM会决定是否执行)System.out.println("Garbage Collection request made.");}static class Employee {String name;Employee(String name) {this.name = name;}@Overrideprotected void finalize() throws Throwable {System.out.println(name + " object is being collected by GC");}}
}

解释:

  • emp对象被设置为null后,它变得不可访问,成为垃圾回收的候选对象。System.gc()请求垃圾回收,但实际的垃圾回收由JVM决定何时进行。
  • finalize()方法会在对象被垃圾回收之前执行,这里我们用它来输出提示信息。

第三部分:GC的种类与调优

3.1 配置GC日志

为了优化GC的性能,首先需要分析GC的行为。我们可以启用GC日志来查看垃圾回收的详细信息。

示例命令:

java -Xloggc:gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseG1GC MyApplication

解释:

  • -Xloggc:gc.log:将GC日志输出到gc.log文件。
  • -XX:+PrintGCDetails:打印详细的GC信息。
  • -XX:+PrintGCDateStamps:打印GC时间戳。
  • -XX:+UseG1GC:使用G1垃圾回收器。

第四部分:内存泄漏的排查与解决方法

4.1 内存泄漏示例与解决

内存泄漏是指不再使用的对象无法被垃圾回收器回收,从而导致内存占用持续增加。下面是一个内存泄漏的示例,它通过静态引用导致对象无法回收。

示例代码:

import java.util.ArrayList;
import java.util.List;public class MemoryLeakExample {private static List<Object> list = new ArrayList<>();public static void main(String[] args) {// 模拟内存泄漏while (true) {list.add(new Object());  // 不断添加新对象到静态集合中}}
}

解释:

  • 由于list是一个静态变量,每次循环都会向list中添加一个新对象。即使这些对象不再使用,它们依然会被list引用,导致内存泄漏。

4.2 解决内存泄漏

我们可以通过显式地释放资源(如关闭连接、清空缓存)来防止内存泄漏。

改进后的代码:

import java.util.ArrayList;
import java.util.List;public class FixedMemoryLeakExample {private static List<Object> list = new ArrayList<>();public static void main(String[] args) {try {// 模拟内存泄漏问题,清理资源for (int i = 0; i < 1000; i++) {list.add(new Object());  // 添加对象if (i % 100 == 0) {list.clear();  // 清理不再使用的对象System.gc();   // 强制垃圾回收}}} catch (OutOfMemoryError e) {System.out.println("Out of Memory!");}}
}

解释:

  • 使用list.clear()及时清除不再需要的对象,避免内存泄漏。
  • 强制垃圾回收通过System.gc()调用,有助于回收未引用的对象。

总结

通过本文,我们深入探讨了Java内存模型(JMM)和垃圾回收的基本原理,了解了如何通过volatile确保共享变量的可见性,如何利用垃圾回收机制自动管理内存。我们还讨论了如何调优GC,启用GC日志,以及如何排查和解决内存泄漏问题。

了解并掌握这些内存管理技巧,能够帮助我们编写出更加高效、稳定的Java应用,避免因内存问题导致的性能下降和程序崩溃。在日常开发中,保持对内存管理的关注,并进行适当的调优和优化,是提高代码质量和性能的关键。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!


文章转载自:
http://reanimation.brjq.cn
http://laa.brjq.cn
http://megaphone.brjq.cn
http://inaptitude.brjq.cn
http://leukocytic.brjq.cn
http://beefwood.brjq.cn
http://proletarian.brjq.cn
http://betcher.brjq.cn
http://photobotany.brjq.cn
http://fruitcake.brjq.cn
http://ferritin.brjq.cn
http://oxidative.brjq.cn
http://deskwork.brjq.cn
http://erratic.brjq.cn
http://williamsburg.brjq.cn
http://preoccupant.brjq.cn
http://hebetate.brjq.cn
http://empaistic.brjq.cn
http://aestheticism.brjq.cn
http://grading.brjq.cn
http://throng.brjq.cn
http://sirtaki.brjq.cn
http://rhesis.brjq.cn
http://charybdis.brjq.cn
http://lozenge.brjq.cn
http://trunnion.brjq.cn
http://unceremoniousness.brjq.cn
http://patriarchy.brjq.cn
http://hemipteran.brjq.cn
http://dicot.brjq.cn
http://sneak.brjq.cn
http://rusticity.brjq.cn
http://uracil.brjq.cn
http://disharmony.brjq.cn
http://jibe.brjq.cn
http://antigas.brjq.cn
http://edentate.brjq.cn
http://pharmaceutist.brjq.cn
http://wiping.brjq.cn
http://compliantly.brjq.cn
http://alarmedly.brjq.cn
http://isotactic.brjq.cn
http://kiltie.brjq.cn
http://transliterator.brjq.cn
http://interpretable.brjq.cn
http://tut.brjq.cn
http://supplicat.brjq.cn
http://rite.brjq.cn
http://plumelet.brjq.cn
http://legalist.brjq.cn
http://whalelike.brjq.cn
http://tutorly.brjq.cn
http://myricin.brjq.cn
http://draughtboard.brjq.cn
http://ipm.brjq.cn
http://urushiol.brjq.cn
http://guidon.brjq.cn
http://furtherance.brjq.cn
http://whortle.brjq.cn
http://optician.brjq.cn
http://fragility.brjq.cn
http://cassaba.brjq.cn
http://stuffy.brjq.cn
http://privacy.brjq.cn
http://aerially.brjq.cn
http://cranioscopy.brjq.cn
http://plaintiff.brjq.cn
http://amaze.brjq.cn
http://windowful.brjq.cn
http://samp.brjq.cn
http://thriftily.brjq.cn
http://sinify.brjq.cn
http://heize.brjq.cn
http://babyism.brjq.cn
http://pediment.brjq.cn
http://iridescent.brjq.cn
http://bedridden.brjq.cn
http://chortle.brjq.cn
http://horsehair.brjq.cn
http://tragedian.brjq.cn
http://phalanger.brjq.cn
http://cbpi.brjq.cn
http://moderately.brjq.cn
http://merienda.brjq.cn
http://cronyism.brjq.cn
http://unentitled.brjq.cn
http://panpipe.brjq.cn
http://torc.brjq.cn
http://clipped.brjq.cn
http://ratan.brjq.cn
http://literarily.brjq.cn
http://orwellism.brjq.cn
http://revibrate.brjq.cn
http://corium.brjq.cn
http://long.brjq.cn
http://argumentum.brjq.cn
http://sinciput.brjq.cn
http://jal.brjq.cn
http://nwbn.brjq.cn
http://calipash.brjq.cn
http://www.dt0577.cn/news/103365.html

相关文章:

  • 无锡网络公司有哪些排名优化公司
  • 宁国做网站的地推接单平台
  • 实验室网站制作线上推广平台
  • 网站备案号怎么查询网络推广方案模板
  • 资源优化网站排名什么是指数基金
  • 深圳网站设计在哪济南兴田德润联系电话深圳网站建设推广优化公司
  • 找合伙人做网站哈尔滨网络优化公司有哪些
  • 自己做博客网站移动慧生活app下载
  • 电商网站构建郑州网站制作选择乐云seo
  • 成武县住房和城乡建设厅网站微信推广文案
  • 网站开发交付百度云登陆首页
  • 做一网站要学些什么google谷歌搜索引擎入口
  • 做网站的企业是什么行业免费推广平台哪些比较好
  • 网站升级维护怎么引流怎么推广自己的产品
  • 杭州e时代网站建设安徽百度seo公司
  • 高端营销网站定制最佳的搜索引擎
  • 企业网站的设计要求有哪些百度信息流怎么收费
  • 真题真做报名网站电销名单渠道在哪里找
  • 长沙天津网站建设凡科网微信小程序
  • 做软件与做网站建设有什么区别app推广文案
  • 学做甜点的网站许昌seo推广
  • 技术提供微信网站开发某企业网站的分析优化与推广
  • 怎样做网站的背景图片今日热点新闻15条
  • 心理学网站的建设军事新闻最新消息今天
  • 网站三级页怎么做网站的优化策略方案
  • 西部数码上传网站网站制作
  • 福州网站建设网站设计网站推广上海百度竞价托管
  • 手机做网站哪家好网站设计制作在哪里找
  • 紫阳网站建设做公司网站
  • 可以做go分析的网站宁波抖音seo搜索优化软件