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

wordpress会员文章内容seo排名点击器曝光行者seo

wordpress会员文章内容,seo排名点击器曝光行者seo,phpcms wordpress,4d网站广告图用什么做的目录 Java对象内存布局markWord 数据结构JDK1.8 JVM 内存结构JDK1.8堆内存结构GC垃圾回收如何发现垃圾如何回收垃圾 JVM调优参数 Java对象内存布局 markWord 数据结构 JDK1.8 JVM 内存结构 程序计数器: 线程私有,记录代码执行的位置. Java虚拟机栈: 线程私有&#…

目录

  • Java对象内存布局
  • markWord 数据结构
  • JDK1.8 JVM 内存结构
  • JDK1.8堆内存结构
  • GC垃圾回收
    • 如何发现垃圾
    • 如何回收垃圾
  • JVM调优参数

Java对象内存布局

Java对象内存布局

markWord 数据结构

markWord数据结构

JDK1.8 JVM 内存结构

JVM内存模型
在这里插入图片描述

  • 程序计数器:
    线程私有,记录代码执行的位置.

  • Java虚拟机栈:
    线程私有,每个线程都有一个自己的Java虚拟机栈 ,默认大小是1M

  • 本地方法栈:
    线程私有,每个线程都有一个自己的本地方法栈,Java虚拟机栈加载的是普通方法,本地方法加载的是native修饰的方法.

    native:表示这个方法不是java原生的,是由C或C++实现的

  • :
    线程共享用于存放对象,new的对象都存储在这个区域

  • 元空间:
    线程共享,存储class信息,类的信息,方法的定义,静态变量常量池

  • 堆和元空间是线程共享的,在Java虚拟机中只有一个堆一个元空间,并在JVM启动的时候就创建,JVM停止才销毁。
  • 栈、本地方法栈、程序计数器是每个线程私有的,随着线程的创建而创建,随着线程的结束而死亡。

每个存储位置会产生的异常
每个位置可能会产生的错误

JDK1.8堆内存结构

堆内存结构

  • 年轻代:Eden+S0+S1, S0和S1大小相等, 新创建的对象都在年轻代
  • 老年代:经过年轻代 多次垃圾回收存活下来的对象存在年老代中.

GC垃圾回收


JVM的垃圾回收动作可以大致分为两大步:

  1. 如何发现垃圾
  2. 如何回收垃圾

线程私有的不存在垃圾回收,只有线程共享的才会存在垃圾回收,所以堆中存在垃圾回收.

如何发现垃圾


常见的用于「发现垃圾」的算法有两种,引用计数算法根搜索算法

  1. 引用计数算法
    堆中的对象每被引用一次,则计数器加1,每减少一个引用就减1,当对象的引用计数器为0时可以被当作垃圾收集。

    • 优点:快。
    • 缺点:无法检测出循环引用。如两个对象互相引用时,他们的引用计数永远不可能为0。
  2. 根搜索算法(也叫根可达性分析)
    根搜索算法是把所有的引用关系 看作一张图,从根节点(GCRoot)开始遍历,找出被根节点引用的节点,对于没有被根节点指向的节点,即可以当作垃圾。

    • Java中可作为GCRoot的对象有:
      1. java虚拟机栈中引用的对象
      2. 本地方法栈引用的对象
      3. 元空间中静态属性引用的对象
      4. 元空间中常量引用的对象

如何回收垃圾


Java中用于「回收垃圾」的常见算法有4种:

  1. 标记-清除算法(markandsweep)
    首先标记出所有需要回收的对象,在标记完成之后统一回收掉所有被标记的对象。

    缺点: 标记清除之后会产生大量的不连续的内存碎片

  2. 标记-整理算法
    首先标记出所有需要回收的对象,让所有存活的对象移动到另一个位置,在移动过程中清理掉可回收的对象,这个过程叫做整理

    优点:内存被整理后不会产生大量不连续内存碎片
    缺点:耗时耗力

  3. 复制算法(copying)
    将空间分成大小相等的两块,每次只使用其中一块,当这块内存使用完了,就将存活的对象复制到另一块内存上去,然后把使用过的内存空间一次清理掉。

    缺点:可使用的内存只有原来一半。在某一个时刻点,总有一个 S 是空的,可能是S0 也可能是S1.。

  4. 分代收集算法(generation)
    当前主流JVM都采用分代收集(GenerationalCollection)算法,这种算法会根据对象存活周期的不同将内存划分为年轻代、年老代,不同生命周期的对象可以采取不同 的回收算法,以便提高回收效率。

    • 年轻代(YoungGeneration)

      1. 所有新生成的对象首先都是放在年轻代的。
      2. 新生代内存按照8:1:1的比例分为一个eden区和两个Survivor(s0,s1)区。大部分对象在Eden区中生成。

      回收流程:
      回收时先将eden区存活的对象复制到一个s0区,然后清空eden区,当这个s区,也存放满了时,则将eden区和s0区存活对象复制到另一个s1区,然后清空eden和这个s0区,此时s0区是空的,然后将s0区和s1区交换,即保持s1区为空,如此往复.

      1. 特殊情况:当一个大对象不足于存放到eden区时,就将存活对象直接存放到老年代。若是老年代也满了就会触发一次FullGC,也就是新生代、老年代都进行回收。

      2. 新生代发生的GC也叫做MinorGC,MinorGC发生频率比较高

    • 年老代(OldGeneration)

      1. 在年轻代中经历了 N次垃圾回收后仍然存活的对象,就会被放到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。默认是15次,且最大15次。

      2. 内存比新生代也大很多(大概是2倍),当老年代内存满时触发FullGC,
        FullGC发生频率比较低,老年代对象存活时间比较长,存活率比较高。

    • 元空间-持久代(PermanentGeneration)
      用于存放静态文件,如Java类、方法等。持久代对垃圾回收没有显著影响。

JVM调优参数

这里只给出一些常见的性能调优的参数及其代表的含义。

-Xms8g: 设置JVM中堆初始堆大小为8g。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

-Xmx8g: 设置JVM中堆最大可用内存为8g。

-Xmn4g: 设置年轻代大小为4G。

-XX:NewRatio=2 设置年轻代(包括Eden和两个Survivor区)与年老代的比值。设置为2,则年轻 代与年老代所占比值为1:2,年轻代占整个堆栈的1/3。

-XX:SurvivorRatio=8 ,所以默认值 Eden:S0:S1=8:1:1。

-Xss1m:设置每个线程的栈大小

-XX:MaxMetaspaceSize=128m: 设置元空间最大为为128m ,

-XX:MetaspaceSize=128m 用于设置元空间的初始大小, 默认值约21M

-XX:MaxTenuringThreshold=15:设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。 对于年老代比较多的应用,可以提高效率。最大不超过15。

http://www.fp688.cn/news/160246.html

相关文章:

  • 工信部备案网站品牌营销推广策划方案
  • css3网站制作教程网站优化团队
  • 下载专门做初中数学题的网站安徽百度推广怎么做
  • 北京网站建设有限公司自媒体平台app
  • 北京专业网站翻译影音字幕翻译速记速记速记快而高效seo平台是什么
  • 电脑配件网站建设小广告设计
  • 书怎么做pdf下载网站做好网络推广的技巧
  • 彩票的网站怎么做的国际重大新闻事件2023
  • 番禺建设网站策划搜索引擎的工作原理是什么
  • 自己做的网站怎么推广东莞网站推广大全
  • 网站电线电话图怎么做关键词快速排名平台
  • 网站建设推广优化招聘模板注册网站免费注册
  • 手机分销网站可视化网页制作工具
  • 大型电子商务网站开发百度图片识别搜索引擎
  • 怎么做冒牌网站站长工具站长之家官网
  • 公司网站模版百度付费问答平台
  • wordpress教程 mac sql广州排前三的seo公司
  • 策勒网站建设搜索引擎入口google
  • 如何做网站实名认证舆情分析网站
  • 让百度收录自己的网站全网推广方案
  • 做网站数据库要哪一种好百度广告投放代理商
  • 常州网站建设专业的公司优化游戏卡顿的软件
  • 网站服务类型是什么意思关键词自助优化
  • 四辩稿的套话模板东莞seo关键词排名优化排名
  • sns社交网站注册建站系统源码
  • 国外做游戏h动画的网站石家庄百度搜索引擎优化
  • 做团购网站的公司网站推广优化招聘
  • 无锡网站建设推广服务深圳网络推广服务是什么
  • 如何做公司网站运营竞价推广论坛
  • 冷门行业做网站的优势seo推广费用