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

手机建站程序百度指数下载手机版

手机建站程序,百度指数下载手机版,外贸网站 开源,在国外怎么做网站文章目录前言一、jvm是如何运行代码的#xff1f;二、jvm的内存模型1 整体内存模型结构图2 堆中的年代区域划分3 对象在内存模型中是如何流转的?4 什么是FULL GC,STW? 为什么会发生FULL GC?5 要调优,首先要知道有哪些垃圾收集器及哪些算法6 调优不是盲目的,要有依据,几款内… 文章目录前言一、jvm是如何运行代码的二、jvm的内存模型1 整体内存模型结构图2 堆中的年代区域划分3 对象在内存模型中是如何流转的?4 什么是FULL GC,STW? 为什么会发生FULL GC?5 要调优,首先要知道有哪些垃圾收集器及哪些算法6 调优不是盲目的,要有依据,几款内存诊断工具7 结束语8 出个问题,也是课程中的总结前言 jvm是java语言可以跨平台运行的基础 jvm 是什么,他是一个可以运行字节码文件的机器; 调优调的是什么? 调整的jvm内存模型中的参数,以及GC垃圾回收器的选择,甚至可以选择使用哪种垃圾回收算法; 那么调优的目的是什么? 调优调的是: 减少GC 的次数,以及GC的STW 时间,这里的GC 大多数指FULL GC 当然minor gc 可能时间会非常长,不过这个情况较为特殊,之后文中会说; 一、jvm是如何运行代码的 大概步骤为 java源文件编译为.class文件.class文件被各种平台版本的jvm编译为本地机器码(字节码)类加载机制将这些字节码加载后,放到运行时数据中(内存模型中)字节码执行器,通过内存中的入栈出栈执行这些字节码 二、jvm的内存模型 1 整体内存模型结构图 ● 堆: 存放对象实例 常量池 ● 方法区: 方法信息头,静态变量,常量 ● 本地方法栈: native 保留方法运行时候的内存空间 ● 程序计数器: 存放执行字节码的行号指示器 (字节码指令的地址) ● java虚拟机栈: 对象的引用,指针,八大基本类型 局部变量 2 堆中的年代区域划分 我们只需要关注我们大多数调整的就好了,那就是年轻代 ,老年代 默认新生代 老年代比例 1:2默认新生代中 eden 和 s (s0 s1) 区域的比例为 8:1:1 3 对象在内存模型中是如何流转的? 首先new 一个对象的时候,对象一般会在堆中开辟一块内存存储然后这个线程结束,这个对象不再被引用之后,就会被纳入到年轻代,当其中的一块s区域满了,发生轻gc,也就是会发生stw;多种情况会导致对象进入老年代: 例如 一个对象的分代年龄大于15; 对象的整体大小大于s0/s1区域的50% ,不会放入s区,直接进入老年代 等等;分代年龄: 在s区域中的对象,每经过一次轻gc,分代年龄加1;轻gc处理对象的方式: 一部分被加入到老年代,大多数都是从一个s区域复制到另个一s区域(标记复制算法)s区域中的两块区域,总有一块是空的; 4 什么是FULL GC,STW? 为什么会发生FULL GC? 与轻gc 类似,FULL GC 是发生在老年代的gcstw 是 stop the word,所有用户线程都会停止,现象例如: 你在淘宝添加一个物品到购物车,卡住了;发生full gc 与轻gc类似,也就是老年代空间被填满了,必须进行垃圾回收,将无用对象全部移除,释放空间如果释放的空间不够,程序仍然在申请大量的内存,那么此时会发生 oom;full gc 一般采用 可达性算法回收(自行百度); 5 要调优,首先要知道有哪些垃圾收集器及哪些算法 常用垃圾回收算法汇总 常用的垃圾回收器 ● Serial 是一个新生代收集器基于标记-复制算法实现 ● Serial Old 是一个老年代收集器基于标记-整理算法实现 ● 两者都是单线程收集需要「Stop The World」 ● Parallel Scavenge 收集器是一款新生代收集器基于标记-复制算法实现 ● Parallel Old 收集器是一款老年代收集器基于标记-整理算法实现 ● 两者都支持多线程并行收集需要「Stop The World」 ● CMSConcurrent Mark Sweep是一个老年代收集器基于标记-清除算法实现 ● G1 是一款主要面向服务端应用的垃圾收集器。 ● 从整体来看是基于「标记-整理」算法实现的收集器但从局部两个 Region 之间上看又是基于「标记-复制」算法实现 ● G1 即是新生代又是老年代收集器无需组合其他收集器。 可以看到垃圾回收器一般不采用单独的一个算法实现 JDK9 前我们会在 CMS 和 G1 间选择对于大概 4GB 到 6GB 以下的堆内存CMS 一般能处理得比较好而对于更大的堆内存可重点考察一下 G1其中G1比较重要,我们详细说下相关参数 -XX:UseG1GC 启用 G1 垃圾回收器 -XX:InitiatingHeapOccupancyPercent45 当整个 Java 堆的占用达到参数的值时开始并发标记阶段 -XX:MaxGCPauseMillis200 G1 暂停时间目标 ( 0 的毫秒数) -XX:NewRation 新生代与老生代 (new/old generation) 的大小比例 (Ratio). 默认值为 2 -XX:SurvivorRation Eden/Survivor 空间大小的比例 (Ratio). 默认值为 8 -XX:MaxTenuringThresholdn 提升年老代的最大临界值 (tenuring threshold). 默认值为 15 -XX:ParallelGCThreadsn 设置垃圾收集器在并行阶段使用的线程数默认值随 JVM 运行的平台不同而不同 -XX:ConcGCThreadsn 并发垃圾收集器使用的线程数量。 默认值随 JVM 运行的平台不同而不同 -XX:G1ReservePercentn 作为空闲空间的预留内存百分比以降低目标空间溢出的风险。默认值是 10% -XX:G1HeapRegionSizen 指定每个 Region 的大小。默认值将根据 heap size 算出最优解。最小值为 1Mb, 最大值为 32Mb我们能够调整的参数有哪些(常用参数汇总) //常见配置汇总 //堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSizen:设置年轻代大小 -XX:NewRation:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRation:年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor3:2,一个Survivor区占整个年轻代的1/5 -XX:MaxPermSizen:设置持久代大小 -XX:MetaspaceSize设置元空间大小 -XX:MaxMetaspaceSize设置元空间最大大小 -Xss128k 设置每个线程的堆栈大小。 //收集器设置 -XX:UseSerialGC:设置串行收集器 -XX:UseParallelGC:设置并行收集器 -XX:UseParalledlOldGC:设置并行年老代收集器 -XX:UseConcMarkSweepGC:设置并发收集器 //垃圾回收统计信息 -XX:PrintGC -XX:PrintGCDetails -XX:PrintGCTimeStamps -Xloggc:filename //并行收集器设置 -XX:ParallelGCThreadsn:设置并行收集器收集时使用的CPU数.并行收集//线程数. -XX:MaxGCPauseMillisn:设置并行收集最大暂停时间 -XX:GCTimeRation:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1n) //并发收集器设置 -XX:CMSIncrementalMode:设置为增量模式.适用于单CPU情况. -XX:ParallelGCThreadsn:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数.并行收集线程数. -XX:CMSParallelRemarkEnabled:并发清理6 调优不是盲目的,要有依据,几款内存诊断工具 jmap jmap使用jstack jstack使用阿里arhtas 百度即可; 下载,运行 arthas ● 线程占用过高原因: thread pid ● 死锁信息: thread -b ● 查看当前代码: jad 文件名称 7 结束语 通过看此文章不会让你知道具体怎么调优,但是应该知道如果调优的大体学习路线,具体怎么调优,我是经过自己的学习外加 观看 诸葛老师的课程 传送门 没错,我也是一个毕业于哔哩哔哩的人; 8 出个问题,也是课程中的 调优的目的是为了减少full gc 的次数和时间,尽量通过minor gc处理,这样就可以了,没有问题哈; 问题如下: 我现在有 8核64G的一个服务器,上面运行的程序不是BAT那种级别的,但是也不小; 问题: 堆内存可以设置很大,为了尽量通过轻gc解决,是不是年轻代设置的越大越好? 答案是否定的,因为当年轻代足够大之后,发生minor gc 的时候,也需要stw ,这个时间也会非常久,所以还是需要做适合的大小配置;这也就是我们为什么要调优的原因; 合适的大小才最重要!!! 总结 经过此番学习,对于jvm内存模型,代码运行,对象流转,内存分配有了更高层次认知,对于jvm调优,为什么要调优有清晰的认知,继续学习这篇文章; 改jvm参数不难,难的是你要知道参数的大小的计算; 要明白参数大小的由来
http://www.w-s-a.com/news/716190/

相关文章:

  • 群晖nas做网站滨州教育平台 网站建设
  • 住房城市乡建设部网站装修平台有哪些
  • 小米网站 用什么做的深圳广告公司前十强
  • 勤哲网站开发视频瑞安 网站建设培训
  • 有个蓝色章鱼做标志的网站高端的网站建设怎么做
  • 建站网址导航hao123html网页设计实验总结
  • 西宁市网站建设价格丽水集团网站建设
  • 长宁怎么做网站优化好本机怎么放自己做的网站
  • 诚信网站备案中心网站字体怎么设置
  • 企业网站建设费是无形资产吗佛山网站建设哪个好点
  • 网站建设就业方向国开行网站毕业申请怎么做
  • 创建一个网站的费用wordpress 4.0 安装
  • 会员登录系统网站建设dw软件是做什么用的
  • 手机网站被做跳转长沙网上购物超市
  • 网站建设中网站需求分析设计网站推荐html代码
  • 容易收录的网站台州汇客网站建设
  • 企业网站源码百度网盘下载网站备案号如何查询密码
  • 个人网站建设课程宣传栏制作效果图
  • 自己做的网站能上传吗网上做彩票网站排名
  • 教育培训网站模板下载自己做商务网站有什么利弊
  • 平面设计公司网站兰州室内设计公司排名
  • 个人工作室注册条件温州seo结算
  • 360免费建站系统中国建设银行官网站黄金部王毅
  • 罗源福州网站建设个体户可以网站备案吗
  • 网站开发 专有名词pc网站建设和推广
  • 上海部道网站 建设conoha wordpress
  • 手机测评做视频网站宝塔可以做二级域名网站么
  • 代理公司注册济南重庆seo优化效果好
  • 佛山市骏域网站建设专家徐州网站建设价格
  • 公司做网站多济南好的网站建设公司排名