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

为什么用dw做的网站打不开杭州 网站程序

为什么用dw做的网站打不开,杭州 网站程序,怎么推广引流,网站开发教程全集目录 概述对象的创建流程对象的内存分配方式对象怎样才会进入老年代大对象直接进入老年代内存担保 jvc 相关指令查看jdk默认使用的gc查看当前jdk支持的有哪些gc查看指定进程当前正在使用的gc 结束 概述 相关文章在此总结如下: 文章地址jvm基本知识地址jvm类加载系…

目录

  • 概述
  • 对象的创建流程
  • 对象的内存分配方式
    • 对象怎样才会进入老年代
      • 大对象直接进入老年代
      • 内存担保
  • jvc 相关指令
    • 查看jdk默认使用的gc
    • 查看当前jdk支持的有哪些gc
    • 查看指定进程当前正在使用的gc
  • 结束

概述

相关文章在此总结如下:

文章地址
jvm基本知识地址
jvm类加载系统地址
双亲委派模型与打破双亲委派地址
运行时数据区地址
运行时数据区-字符串常量池、程序计数器、直接内存地址

对象的创建流程

在这里插入图片描述
常量池检查: 检查 new 指令是否能在 常量池中定位到这个类的符号引用,检查类之前是否被加载过。

分配内存空间:

  • 指针碰撞:GC 不带压缩功能,Serial和ParNew
  • 空闲列表:GC 带压缩功能,CMS

必要信息设置: 对象类的元数据、对象哈希码、GC分代年龄 —> 对象头

对象的内存分配方式

内存分配的方法有两种:

  • 指针碰撞 (Bump the Pointer)
  • 空间列表 (Free List)
分配方法说明收集器
指针碰撞(Bump the Pointer)内存地址是连续的(新生代)Serial和ParNew收集器
空闲列表(Free List)内存地址不连续(老年代)CMS收集器和Mark-Sweep收集器

在这里插入图片描述

对象怎样才会进入老年代

在这里插入图片描述
空间担保机制: 当新生代无法分配内存的时候,要想将新生代的对象转移至老年代,然后将新对象放入腾空的新生代。此种机制称之为内存担保

对象进入老年代如下:

  • 新对象大多数默认都进入 Eden
  • 对象进入老年代的四种情况
    • 年龄太大 MinorGC15 [-XX:MaxTenuringThreshold]
    • 动态年龄判断:MinorGC后会动态判断年龄,将符合要求对象番移入老年代
    • 大对象直接进入老年代 1M [-XX:PretenureSizeThreshold]
    • MinorGC后存活对象太多无法放入 Survivor

动态年龄判断:例子,Survivor 区中有一批对象,年龄分别为 年龄1+年龄2+年龄n的多个对象,对象总和大小超过了Survivor区域的 50%,此时就会将年龄n及以上的对象都放入老年代。

大对象直接进入老年代

测试代码如下:

/*** -XX:NewRatio=2 新生代与老年代比值* -XX:SurvivorRatio=8  新生代中,Eden 与两个Survivor 区域比值* -XX:+PrintGcDetails  打印详细 GC 日志* -XX:PretenureSizeThreshold  对象超过多大值直接在老年代分配,默认值为0,不限制*/
public class YoungOldArea {public static void main(String[] args) {// 分配 20Mbyte[] bytes = new byte[1024 * 1024 * 20];}
}
appledeMacBook-Pro:gc hyl$ javac /Users/hyl/Desktop/jk/jvm/YoungOldArea.java 
appledeMacBook-Pro:gc hyl$ cd /Users/hyl/Desktop/jk/jvm
appledeMacBook-Pro:jvm hyl$ java  -Xmx60m -Xms60m -XX:NewRatio=2  -XX:SurvivorRatio=8 -XX:+PrintGCDetails YoungOldArea

在这里插入图片描述

内存担保

测试代码如下:

/*** 内存分配担保案例*/
public class MemoryAllocationGuarantee {private static final int _1MB = 1024 * 1024;public static void main(String[] args) {memoryAllocation();}public static void memoryAllocation() {byte[] allocation1, allocation2, allocation3, allocation4;allocation1 = new byte[1 * _1MB];allocation2 = new byte[1 * _1MB];allocation3 = new byte[1 * _1MB];allocation4 = new byte[5 * _1MB];System.out.println("完毕");}
}
appledeMacBook-Pro:jvm hyl$ javac MemoryAllocationGuarantee.java
appledeMacBook-Pro:jvm hyl$ ls
MemoryAllocationGuarantee.class	MemoryAllocationGuarantee.java	YoungOldArea.class		YoungOldArea.java		lib
appledeMacBook-Pro:jvm hyl$ java  -Xmx20m -Xms20m -XX:NewRatio=2  -XX:SurvivorRatio=8  -XX:+UseSerialGC   -XX:+PrintGCDetails MemoryAllocationGuarantee
[GC (Allocation Failure) [DefNew: 3749K->279K(6144K), 0.0039312 secs] 3749K->3351K(19840K), 0.0039781 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
完毕
Heapdef new generation   total 6144K, used 5561K [0x00000007bec00000, 0x00000007bf2a0000, 0x00000007bf2a0000)eden space 5504K,  95% used [0x00000007bec00000, 0x00000007bf128920, 0x00000007bf160000)from space 640K,  43% used [0x00000007bf200000, 0x00000007bf245d48, 0x00000007bf2a0000)to   space 640K,   0% used [0x00000007bf160000, 0x00000007bf160000, 0x00000007bf200000)tenured generation   total 13696K, used 3072K [0x00000007bf2a0000, 0x00000007c0000000, 0x00000007c0000000)the space 13696K,  22% used [0x00000007bf2a0000, 0x00000007bf5a0030, 0x00000007bf5a0200, 0x00000007c0000000)Metaspace       used 2668K, capacity 4486K, committed 4864K, reserved 1056768Kclass space    used 287K, capacity 386K, committed 512K, reserved 1048576K
appledeMacBook-Pro:jvm hyl$ 

在这里插入图片描述
当新生代无法分配内存的时候,要想将新生代的对象转移至老年代,然后将新对象放入腾空的新生代。

注意: jdk8 设置了 使用 SerialGC ,默认GC不是这样的流程,如下命令行执行的命令

appledeMacBook-Pro:jvm hyl$ java  -Xmx20m -Xms20m -XX:NewRatio=2  -XX:SurvivorRatio=8   -XX:+PrintGCDetails MemoryAllocationGuarantee
完毕
HeapPSYoungGen      total 6144K, used 3764K [0x00000007bf980000, 0x00000007c0000000, 0x00000007c0000000)eden space 5632K, 66% used [0x00000007bf980000,0x00000007bfd2d180,0x00000007bff00000)from space 512K, 0% used [0x00000007bff80000,0x00000007bff80000,0x00000007c0000000)to   space 512K, 0% used [0x00000007bff00000,0x00000007bff00000,0x00000007bff80000)ParOldGen       total 13824K, used 5120K [0x00000007bec00000, 0x00000007bf980000, 0x00000007bf980000)object space 13824K, 37% used [0x00000007bec00000,0x00000007bf100010,0x00000007bf980000)Metaspace       used 2668K, capacity 4486K, committed 4864K, reserved 1056768Kclass space    used 287K, capacity 386K, committed 512K, reserved 1048576K

在这里插入图片描述

jvc 相关指令

查看jdk默认使用的gc

java -XX:+PrintCommandLineFlags -version

查看当前jdk支持的有哪些gc

java -XX:+PrintFlagsFinal -version | grep 'bool Use' | grep 'GC ' | grep -v java

查看指定进程当前正在使用的gc

jhsdb jmap --heap --pid 22397

结束

至此,jvm中对象创建流程与内存分配就结束了,如有疑问,欢迎评论区留言。

http://www.yayakq.cn/news/223221/

相关文章:

  • 深圳外贸网站建设工作室163邮箱新用户注册
  • 佛山规划建设局网站wordpress 建购物网站
  • 做网站吸引客户网页升级访问中未满十八岁
  • 摄影摄像网站建设vps没问题访问不了网站
  • 公司网站制作重庆极速网站建设
  • 主机屋的免费空间怎么上传网站制作一个私人网站怎么申请域名
  • 免费建站赚钱申请免费网站主页空间
  • 网站速度慢的原因旅行社做境外购物网站
  • 深圳建站模板公司国内好的网站建设
  • 营销网站搭建建议苏州网站建设丶好先生科技
  • 长春网站建设那家好网站建设上海诏业
  • 朝阳区建设工作办公室网站图片外链生成
  • 网站设计公司费用好的网站搭建公司
  • 东莞网站优化关键词推广开发公司组织架构设计
  • 广州做英文网站的公司网页与网站设计工作内容
  • 保定网站排名优化采购网官网
  • hs网站推广大连坐网站
  • 广州网站优化排名推广二手房网站建设书
  • 做商城网站需要多少钱电商设计外包
  • 做国内电影网站赚钱不什么网站可以做试卷
  • 建设网站最便宜多少钱手机网站源码怎么打开
  • 江门网站制作网站青岛室内设计公司排名
  • 做化妆招生宣传在那些网站可以做wordpress foot增加js
  • 奉化区城乡建设局网站网站死链接提交
  • 广州网站建设设计厂家网站里的图片是怎么做的
  • 南通市住房和城乡建设厅网站长沙网站建设网站
  • 成全视频免费观看汉中网站seo
  • 网站建设制作设计公司佛山常熟seo网站优化软件
  • 保健品网站源码软件开发工程师考核指标
  • 网站能不能一边用 一边备案wordpress 中文 字体大小