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

营销型外贸网站建设软件备案域名出租

营销型外贸网站建设软件,备案域名出租,前端开发培训机构推荐,东莞市美时家具营销型网站JVM JVM 是 java 虚拟机#xff0c;简单来说就是能执行标准 java 字节码的虚拟计算机 JVM 是如何工作的 首先程序在执行之前先要把 Java 代码#xff08;.java#xff09;转换成字节码#xff08;.class#xff09;#xff0c;JVM 通过类加载器#xff08;ClassLoade…JVM JVM 是 java 虚拟机简单来说就是能执行标准 java 字节码的虚拟计算机 JVM 是如何工作的 首先程序在执行之前先要把 Java 代码.java转换成字节码.classJVM 通过类加载器ClassLoader把字节码加载到内存中但字节码文件是 JVM 的一套指令集规范并不能直接交给底层操作系统去执行因此需要特定的命令解析器执行引擎Execution Engine将字节码翻译成底层机器码再交由 CPU 去执行CPU 执行的过程中需要调用本地库接口Native Interface来完成整个程序的运行。 jvm 的组件以及功能 类加载器Class Loader加载类文件到方法区。执行引擎Execution Engine也叫解释器负责解释命令交由操作系统执行。本地库接口Native Interface本地接口的作用是融合不同的语言为 java 所用运行时数据区Runtime Data Area 1堆。堆是 java 对象的存储区域任何用 new 字段分配的 java 对象实例和数组都被分配在堆 上 2方法区用于存储已被虚拟机加载的类信息常量静态变量即时编译器编译后的代码等 数据。 3虚拟机栈虚拟机栈中执行每个方法的时候都会创建一个栈桢用于存储局部变量表操作 数栈动态链接方法出口等信息。 4本地方法区用来调用非 Java 语言实现的方法 5程序计数器。指示 Java 虚拟机下一条需要执行的字节码指令。 请谈一下方法区永久代元空间 很多人把方法区称作“永久代”Permanent Generation本质上两者并不等价只是 HotSpot 虚 拟机垃圾回收器团队把 GC 分代收集扩展到了方法区或者说是用来永久代来实现方法区而已 这样能省去专门为方法区编写内存管理的代码但是在 Jdk8 也移除了“永久代”使用 Native Memory 来实现方法区。 元空间是 Hotspot 在 JDK8 中新加的内容其本质和永久代类似都是对 JVM 规范中方法区的实 现。不过元空间与永久代之间最大的区别在于元空间并不在虚拟机中而是使用本地内存。 会发生内存溢出的区域 首先程序计数器不会发生内存溢出因为 java 虚拟机规范了程序计数器是没有内存溢出的区域 内存溢出分为两者情况一种是 OutOfMemoryError 堆内存耗尽对象越来越多又一直使用不能被垃圾回收方法区内存耗尽 - 加载的类越来越多虚拟机栈累计 - 每个线程都会占用 1M 的内存线程越来越多还不销毁 另一种是 StackOverflowError JVM 虚拟机栈原因有递归调用未正常结束或者反序列化 json 循环引用 什么是内存泄漏内存泄漏与内存溢出的区别 在 java 中一般是指无用的对象因为错误的引用关系不能被 GC 回收处理 如果存在严重的内存泄漏问题随着时间推移必会引发内存溢出。内存泄漏一般是指资源管理问 题和程序 BUG内存溢出一般是指内存空间不足和内存泄漏的最终结果 请谈一下什么是垃圾回收 GC 前要做的三件事 哪些内存需要回收什么时候回收怎么回收 如何确定垃圾 引用计数法 只要一个对象被其他变量所引用就让这个对象的计数 1如果某一个变量不在被引用让 他的计数-1当这个对象引用计数 0 的时候代表这个对象没有再被引用了就可以作为一个 垃圾被回收掉。引用计数法有一个弊端在循环引用的场合如果两个对象被循环无限引用虽 然都不在使用了但是两个对象的计数都不为 0导致不能被回收。 可达性分析 确定一系列根对象垃圾回收前先把堆中的对象进行一次扫描判断每一个对象是不是被根 对象所直接或者间接引用如果是那么这个对象就不能被回收。反正如果这个对象没有被根对 象直接或者间接所引用那么这个对象就可以作为垃圾被回收。 如何确定 GC Roots 对象 虚拟机栈中引用的对象 方法区中的类静态属性引用的对象 方法区中常量引用的对象 本地方法栈中 JNI 引用的对象 对象的引用关系都有哪些 不管是引用计数法还是可达性分析算法都与对象的“引用”有关这说明对象的引用决定了 对象的生死对象的引用关系如下。 强引用在代码中普遍存在的类似 Object obj new Object() 这类引用只要强引用还 在垃圾收集器永远不会回收掉被引用的对象。 软引用 是一种相对强引用弱化一些的引用可以让对象豁免一些垃圾收集只有当 JVM 认为内存不足时才会去试图回收软引用指向的对象JVM 会确保在抛出 OutOfMemoryError 之前清理软引用指向的对象。 弱引用 非必需对象但它的强度比软引用更弱被弱引用关联的对象只能生存到下一 次垃圾收集发生之前。 虚引用 也称为幽灵引用或幻影引用是最弱的一种引用关系无法通过虚引用来获取 一个对象实例为对象设置虚引用的目的只有一个就是当着个对象被收集器回收时收到一 条系统通知。 垃圾回收算法有哪些 标记清除算法 标记阶段沿着 GC Root 对象的引用链找直接或间接引用到的对象加上标记 清除阶段释放未加标记的对象占用的内存 标记整理法 前面的标记阶段、清理阶段与标记清除法类似 多了一步整理的动作将存活对象向一端移动可以避免内存碎片产生 标记复制法 将整个内存分成两个大小相等的区域from 和 to其中 to 总是处于空闲from 存储新创建的 对象标记阶段与前面的算法类似在找出存活对象后会将它们从 from 复制到 to 区域复制的过程中自然完成了碎片整理复制完成后交换 from 和 to 的位置即可。 分代收集算法 当前主流 JVM 垃圾回收基本都采用分代收集算法这种算法会根据对象存活周期的不同将内存 分为几块比如 JVM 中的年轻代、老年代、永久代。这样就可以根据各年代特点分别采用最适 当的 GC 算法。 垃圾收集按照回收区域分类 默认情况下新生代和老生代的内存比例是 1:2。 部分收集Partial GC 年轻代收集Minor GC只是年轻代EdenFromTo的垃圾收集。 老年代收集Major GC只是老年代的垃圾收集。 整堆收集Full GC 收集整个 Java 堆和方法区的垃圾暂停时间长应尽力避免 混合收集Mixed GC) 收集整个新生代以及部分老年代的垃圾收集目前只有 G1 收集器会有这种行为。 Minor GC 年轻代垃圾回收触发机制 新生代垃圾回收采用的是复制算法每次垃圾收集都能发现大批对象已经死亡只有少量存 活因此选择复制算法年轻代又被分为 Eden 区From 区和 To 区。 新对象产生的时候都会被放入年轻代的 Eden 区如果是个大对象会直接进入老年代判断 大对虾通过 Pretenure SIze Threshold 参数设置默认 3M当 eden 内存不足标记 eden 和 from 的存活对象清理不可达对象将 Eden 区和 From 区没有被清理的对象使用复制算法复制到年 轻代的幸存区 To 区并且将 To 区幸存的对象年龄 1在交换幸存区 To 区和幸存区 From 区的 位置。minor GC 会引发一次 stop the world暂停其他用户的线程等到垃圾会输结束用户线程 才恢复运行。当寿命达到 15 次左右作为一个老不死对象会被移交至老年代。 Major GC老年代垃圾回收 Major GC 指发生在老年代的 GCMajorGC 采用标记—清除算法。 Major GC 触发条件: 老年代空间不足时会先尝试触发 Minor GC。Minor GC 之后空间还 不足则会触发 Major GC。 Full-GC触发条件 Full-GC是针对整个新生代老年代和元空间的全局范围内的GC。Full-GC不等于Major GC也不等于Minor GCMajor 发生Full-GC具体看使用了什么垃圾回收器才能解释是什么样的垃圾回收。当⽼年代的空间使⽤率超过某阈值时会触发Full GC当元空间不⾜时JDK1.7永久代不足也会触发Full GC当调⽤System.gc()也会安排⼀次Full GC。 JVM 中为什么新生代中要有两个 Survivor 区 如果 Survivor 是 0 的话也就是说新生代只有一个 Eden 分区每次垃圾回收之后存活的对 象都会进入老生代这样老生代的内存空间很快就被占满了从而触发最耗时的 Full GC 显然 这样的收集器的效率是我们完全不能接受的。Survivor 中分为两个区一个 FromService 一个 ToService 区首先如果只有一个区的话当新 生代的 Gc 开始工作的时候先把 Eden 区的垃圾回收了根据其标志-复制算法我们需要保留的 对象会被移动到 FromService 区中当FromService 中的内存容量达到了一个阈值需要我们堆 FromService区进行收集的时候会导致大量的内存碎片残存其中以至于后来无法在存入大对象 了两个区的好处在于当 FromService区的不需要用到对象也需要被清理的时候Minor GC 再 次被触发的时候我们需要保留的对象送到了 ToService 区然后将ToService 区域和 FromService 区域互换身份这样我们避免了碎片化的存在而且永远都有一个干净的内存区域可以使用是内存区域非常的整洁。 常见的垃圾回收器有哪些 新生代回收器Serial、ParNew、Parallel Scavenge 老年代回收器Serial Old、Parallel Old、CMS 整堆回收器G1 Serial 垃圾收集器单线程、复制算法 Serial 垃圾收集器是最基本的垃圾收集器它使用的是复制算法Serial 是一个单线程收集 器它只会使用一个 CPU 或一条线程去完成垃圾收集在进行垃圾收集的同时必须暂停其他所 有的工作线程直到垃圾收集结束。简单、高效。对于单个 CPU 环境来说没有线程交互的开销可 以获得最高的单线程回收效率。但一般限定单核 CPU 才可以使用。 ParNew 垃圾收集器Serial 多线程 ParNew 垃圾收集器是 Serial 收集器的多线程版本使用的也是复制算法除了使用多线程 进行垃圾回收其余的行为全都和 Serial 一样ParNew 垃圾收集器在垃圾收集过程中也会产生 STW。ParNew 会默认开启和 CPU 数目相同的线程数可以通过-XXParallelGCThreads 参数来 限制垃圾收集器的线程数。 CMS 垃圾回收器 (多线程标记清除算法) 是一款里程碑式的垃圾收集器为什么这么说呢因为在它之前GC 线程和用户线程是无 法同时工作的即使是 Parallel Scavenge也不过是 GC 时开启多个线程并行回收而已GC 的整 个过程依然要暂停用户线程即 Stop The World。这带来的后果就是 Java 程序运行一段时间就会 卡顿一会降低应用的响应速度这对于运行在服务端的程序是不能被接收的。 G1 收集器 Garbage first 垃圾收集器相比 CMS 收集器有以下两个改进 基于标记-整理算法不产生内存碎片。可以非常精确控制停顿时间在不牺牲吞吐量前提 下实现低停顿垃圾回收。 G1 收集器避免全区域垃圾收集他把堆内存划分为几个固定大小的独立区域上面提到的 分区收集算法并且跟踪这些区域的垃圾收集进度同时在后台维护一个优先级列表。每次根 据所允许的收集时间优先回收垃圾最多的区域。区域划分和优先级回收机制确保 G1 收集器可 以在有限时间获取最高的垃圾收集效率。
http://www.w-s-a.com/news/877275/

相关文章:

  • 网站域名禁止续费m99ww094cn 苍井空做的网站
  • 上海建设工程网站大同网站建设熊掌号
  • 设计类书籍网站江苏网站建设简介模板
  • 手机企业网站推广c 手机app开发
  • 网站建设需要多少天凡客建设网站稳定吗
  • 房天下网站建设女生说wap是什么意思
  • 网站开发安全机制北京做网站多少钱合理
  • 扁平化 公司网站建设大型视频网站需要的资金量
  • 免费建各种网站淄博网站建设yx718
  • 凡科网建站入门教程运城市网站建设
  • 黄浦区未成年人思想道德建设网站oa系统是什么
  • 微信里的网站怎么做电子商务网站开发平台
  • 易企秀网站怎么做轮播图网站建设张世勇
  • 网站备案幕布尺寸建立网页的几个步骤
  • pc网站页面找出网站所有死链接
  • 专业做seo的网站网站内连接
  • 阿里云网站开发服务器想开网站建设公司
  • 网站开发不足之处茶叶seo网站推广与优化方案
  • 响应式网站建设系统网站优化怎么做 有什么技巧
  • 班级网站做哪些方面wordpress标签 扩展
  • 如何在电商上购物网站Wordpress 域名授权插件
  • 网站建设后台怎么弄昆明如何做好关键词推广
  • 自己怎么做个网站优酷视频网站开发
  • 2015做网站前景电子商务营销的发展现状
  • 官方网站建设情况说明电子商务网站开发的形式有
  • 网站建设玖金手指排名11专业建站公司建站系统
  • 全球排名前十网站百度网站官网网址
  • 商家在携程旅游网站怎样做宣传做网站公司苏州
  • 芜湖做网站都有哪些广州音乐制作公司
  • 青岛好的网站制作推广注册公司流程步骤