JVM 知识点

java 同时被 2 个专栏收录
126 篇文章 0 订阅
2 篇文章 0 订阅

JVM如何跨平台:

  • 不同系统有不同的JVM环境,JRE不同运行时候进行跨平台。
  • c和c++根据选择的不同类库在编译时跨平台,java在运行时跨平台

JVM分为三大块:

  • 年轻代 由End、S0和S1组成
  • 年老代
  • 持久代(JDK1.8取消了)

年轻代分为三大块:

当发生年轻代GC(YGC)时End区域的对象被其他对象引用时,则移到幸存者S0、S1区,未引用的立即清除,当S0和S1多次YGC都还存在的话,则移到老年代区域。

GC分为两大块:

  • minor GC 清理新生代和老年代
  • Full GC 清理整个堆空间

垃圾回收GC实现:

  • 主要回收算法:
  1. 标记-清除算法
  2. 标记-整理算法
  3. 复制算法
  4. 分代收集算法
  5. 分区收集法(G1)
  • 常用垃圾回收器:
  1. Serial串行收集器(新老年代)
    1. 为单线程环境设计,只能一个线程进行回收;会暂停所有用户线程,不适用多线程环境。
  2. ParNew收集器
    1. Serial的多线程版本
  3. Parallel Scavenge并行收集器
    1. 采用复制算法。多个垃圾收集线程工作,此时用户是暂停的;常用于科学计算、大数据等弱交互场景。关注点在提高系统吞吐量上。
  4. CMS(Concurrent Mark Sweep 并行标记清除)收集器
    1. 不需要暂停用户线程,以牺牲吞吐量来得到GC最短停顿时间,快速响应用户。对CPU的要求比较高,采用标记-清除算法,会产生较多内存碎片。适用对响应时间有要求的公司。
  5. G1(Carbage First)收集器(从JDK1.7 Update 14之后的HotSpot虚拟机正式提供了商用的G1收集器)
    1. G1的出现是打算替代CMS的。将内存分成了许多小空间,对内存小空间有要求1-32M,是一种跨年轻代和旧生代的回收,与以往理解的对内存结构不同。采用标记-整理、分区收集算法,产生碎片空间较少。可设置程序暂停的最大时间。

CMS和G1相同点:

  1. 都是响应有限,尽可能减少stop the world的时间。
  2. G1和CMS的Full GC都是单线程mark sweep compact(标记-清扫-压缩),直到JDK10才并行的

JVM底层实现原理:

  1. 类装载子系统
  2. java运行时数据区
  • 堆(heap)
  • 方法区/元空间(method) 常量+静态变量+类信息
  • 栈(stack) 先进后出
  • 本地方法栈(Native Method Stack) native修饰的方法
  • 程序计数器(Program Counter Register)

堆和方法区为线程共享数据,栈、本地方法栈和程序计数器为线程私有数据。

  1. 执行引擎 cpu操作运行时数据区

GC执行顺序:

     end区内存满了则触发minor gc回收,将无引用的对象清除,有用的则移动到s0幸存者,s0中对象头中年龄变更为1,下次清理还存在时变更为2。s0的对象age在15次还没回收时将进入老年代。end对象放到幸存者区,对象大于s0幸存者百分之50则直接进入老年代。

什么是内存溢出oom和内存泄露 ??

  • 内存溢出 项目中创建的对象内存在校大于堆内存剩余大小。
  • 内存泄露 项目中创建的引用,不再被引用使用且存在

性能调优:

  • 为什么调优?

有限的空间做更多的事情。设置JVM设置使用内存上限,避免影响系统其它程序。

  • 调优调的是什么?

性能调优调的是是堆

  • 参数默认值是什么?

老年代3分之二 新生代三分之一

新生代8:1:1 end:s0:s1(幸存区)

s0最大年龄15,4byte最大二进制位1111,对应数字为15。

  • 调优的方向

要减少stw(stop the world)出现,也就是减少full gc,减少老年代满的次数。因为stw时JVM是不能提供响应的,容易导致用户体验不好。

  1. 避免大的垃圾对象从End区转到S0区,对象超过S0区50%直接放入老年代,增加fullGC次数。调优方法:年轻代和老年代适度分配,并不是年老代越大越好。

性能调优命令?

  • top 查看占服务器前10的进程
  • jmap 查看内存堆栈信息,可使用dump来进行导出。本地使用 java visualVM 查看分析。
  • jstack 查看CPU使用的线程信息

如何指定垃圾收集器?

-XX:UseG1GC,指定GC。算

jvm可以指定算法吗?

不能,算法跟着垃圾收集器走

jdk1.8做了哪些提升?

  • 废弃老年代,将方法区改为元空间
  • 提供了 G1 垃圾收集器

分析 JVM 神器,有哪些?(部分)

  1. 阿里开源的 arthas ,方便我们查看本地运行的 java 程序的内存使用情况等
  2. Visual VM,方便查看、分析下载的dump内存文件等

百万订单的网站会有更多的jvm坑,有的学,最好配合实战演练,这样记忆深刻,理解也会透彻些。

 

 

 

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
<p style="font-size:16px;color:#666666;"> <img src="https://img-bss.csdn.net/202001311426171105.png" alt="" /> </p> <p style="font-size:16px;color:#666666;"> <strong><span style="font-size:20px;">课程目标</span></strong> </p> <p style="font-size:16px;color:#666666;"> 《从零开始学Scrapy网络爬虫》从零开始,循序渐进地介绍了目前流行的网络爬虫框架Scrapy。即使你没有任何编程基础,学习起来也不会有压力,因为我们有针对性地介绍了Python编程技术。另外,《从零开始学Scrapy网络爬虫》在讲解过程中以案例为导向,通过对案例的不断迭代、优化,让读者加深对知识的理解,并通过14个项目案例,提高学习者解决实际问题的能力。 </p> <p style="font-size:16px;color:#666666;"> <br /> </p> <p style="font-size:16px;color:#666666;"> <strong><span style="font-size:20px;">适合对象</span></strong> </p> <p style="font-size:16px;color:#666666;"> 爬虫初学者、爬虫爱好者、高校相关专业的学生、数据爬虫工程师。 </p> <p style="font-size:16px;color:#666666;"> <br /> </p> <p style="font-size:16px;color:#666666;"> <span style="font-size:20px;"><strong>课程介绍</strong></span> </p> <p style="font-size:16px;color:#666666;"> 《从零开始学Scrapy网络爬虫》共13章。其中,第1~4章为基础篇,介绍了Python基础、网络爬虫基础、Scrapy框架及基本的爬虫功能。第5~10章为进阶篇,介绍了如何将爬虫数据存储于MySQL、MongoDB和Redis数据库中;如何实现异步AJAX数据的爬取;如何使用Selenium和Splash实现动态网站的爬取;如何实现模拟登录功能;如何突破反爬虫技术,以及如何实现文件和图片的下载。第11~13章为高级篇,介绍了使用Scrapy-Redis实现分布式爬虫;使用Scrapyd和Docker部署分布式爬虫;使用Gerapy管理分布式爬虫,并实现了一个抢票软件的综合项目。 </p> <p style="font-size:16px;color:#666666;"> <span style="color:#FF0000;">      由于目标网站可能会对页面进行改版或者升级反爬虫措施,如果发现视频中的方法无法成功爬取数据,敬请按照页面实际情况修改XPath的路径表达式。视频教程主要提供理论、方法支撑。我们也会在第一时间更新源代码,谢谢!</span> </p> <p style="font-size:16px;color:#666666;"> <img src="https://img-bss.csdn.net/202001311426306665.png" alt="" /> </p> <p style="font-size:16px;color:#666666;"> <strong><span style="font-size:20px;">课程特色</span></strong> </p> <p style="font-size:16px;"> <img src="https://img-bss.csdn.net/202001311426415123.png" alt="" /> </p> <div> <br /> </div>
<div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;"> </span> <div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;"> </span> <div style="color:rgba(0,0,0,.75);"> <div style="color:rgba(0,0,0,.75);"> <span style="color:#4d4d4d;">当前课程中商城项目的实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 6300 多个 star,</span><span style="color:#4d4d4d;">本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。<br /> 商城项目所涉及的功能结构图整理如下:<br /> </span> </div> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <p style="color:#4d4d4d;"> <img alt="modules" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3N0b3JlL25ld2JlZS1tYWxsLXMucG5n?x-oss-process=image/format,png" /> </p> </div> <p style="color:rgba(0,0,0,.75);"> <strong><span style="color:#e53333;">课程特色</span></strong> </p> <p style="color:rgba(0,0,0,.75);">   </p> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <ul> <li> 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目 </li> <li> 最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择 </li> <li> 实践项目页面美观且实用,交互效果完美 </li> <li> 教程详细开发教程详细完整、文档资源齐全 </li> <li> 代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜 </li> <li> 技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 </li> </ul> </div> <p style="color:rgba(0,0,0,.75);">   </p> <p style="color:rgba(0,0,0,.75);"> <span style="color:#e53333;">课程预览</span> </p> <p style="color:rgba(0,0,0,.75);">   </p> <div style="color:rgba(0,0,0,.75);">   </div> <div style="color:rgba(0,0,0,.75);"> <p style="color:#4d4d4d;"> 以下为商城项目的页面和功能展示,分别为: </p> </div> <div style="color:rgba(0,0,0,.75);"> <ul> <li> 商城首页 1<br /> <img alt="" src="https://img-bss.csdnimg.cn/202103050347585499.gif" /> </li> <li> 商城首页 2<br /> <img alt="" src="https://img-bss.csdn.net/202005181054413605.png" /> </li> <li>   </li> <li> 购物车<br /> <img alt="cart" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvY2FydC5wbmc?x-oss-process=image/format,png" /> </li> <li> 订单结算<br /> <img alt="settle" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3Qvc2V0dGxlLnBuZw?x-oss-process=image/format,png" /> </li> <li> 订单列表<br /> <img alt="orders" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3Qvb3JkZXJzLnBuZw?x-oss-process=image/format,png" /> </li> <li> 支付页面<br /> <img alt="" src="https://img-bss.csdn.net/201909280301493716.jpg" /> </li> <li> 后台管理系统登录页<br /> <img alt="login" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvbWFuYWdlLWxvZ2luLnBuZw?x-oss-process=image/format,png" /> </li> <li> 商品管理<br /> <img alt="goods" src="https://imgconvert.csdnimg.cn/aHR0cHM6Ly9uZXdiZWUtbWFsbC5vc3MtY24tYmVpamluZy5hbGl5dW5jcy5jb20vcG9zdGVyL3Byb2R1Y3QvbWFuYWdlLWdvb2RzLnBuZw?x-oss-process=image/format,png" /> </li> <li> 商品编辑<br /> <img alt="" src="https://img-bss.csdnimg.cn/202103050348242799.png" /> </li> </ul> </div> </div> </div> </div>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

知彼解己

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值