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

中国网站排名查询上海网页设计班

中国网站排名查询,上海网页设计班,经营网站备案查询,wordpress 密码一、JVM的组成 1、JVM由哪些部分组成#xff0c;运行流程是什么#xff1f; 回答#xff1a;在JVM中共有四大部分#xff0c;分别是Class Loader#xff08;类加载器#xff09;、Runtime Data Area#xff08;运行时数据区#xff0c;内存分区#xff09;、Execut…一、JVM的组成 1、JVM由哪些部分组成运行流程是什么 回答在JVM中共有四大部分分别是Class Loader类加载器、Runtime Data Area运行时数据区内存分区、Execution Engine执行引擎、Native Method Library本地库接口。 它们的运行流程是 第一类加载器ClassLoader把Java代码转换为字节码文件 第二运行时数据区Runtime Data Area把字节码加载到内存中而字节 码文件只是JVM的一套指令集规范并不能直接交给底层系统去执行而是 有执行引擎运行 第三执行引擎Execution Engine将字节码翻译为底层系统指令再交 由CPU执行去执行此时需要调用其他语言的本地库接口Native Method Library来实现整个程序的功能。 2、详细说一下 JVM 运行时数据区吗 运行时数据区包含了堆、方法区、栈、本地方法栈、程序计数器这几部分每个功能作用不一样。 堆解决的是对象实例存储的问题垃圾回收器管理的主要区域。 方法区可以认为是堆的一部分用于存储已被虚拟机加载的信息常量、静态变量、即时编译器编译后的代码。 栈解决的是程序运行的问题栈里面存的是栈帧栈帧里面存的是局部变量表、操作数栈、动态链接、方法出口等信息。 本地方法栈与栈功能相同本地方法栈执行的是本地方法一个Java调用非Java代码的接口。 程序计数器PC寄存器程序计数器中存放的是当前线程所执行的字节码的行数。JVM工作时就是通过改变这个计数器的值来选取下一个需要执行的字节码指令。 3、你再详细介绍一下程序计数器的作用 java虚拟机对于多线程是通过线程轮流切换并且分配线程执行时间。在任何的一个时间点上一个处理器只会处理执行一个线程如果当前被执行的这个线程它所分配的执行时间用完了【挂起】。处理器会切换到另外的一个线程上来进行执行。并且这个线程的执行时间用完了接着处理器就会又来执行被挂起的这个线程。这时候程序计数器就起到了关键作用程序计数器在来回切换的线程中记录他上一次执行的行号然后接着继续向下执行。 4、你能给我详细的介绍Java堆吗? Java中的堆术语线程共享的区域。主要用来保存对象实例数组等当堆中没有内存空间可分配给实例也无法再扩展时则抛出OutOfMemoryError异常。 在JAVA8中堆内会存在年轻代、老年代 1Young区被划分为三部分Eden区和两个大小严格相同的Survivor区其中Survivor区间中某一时刻只有其中一个是被使用的另外一个留做垃圾收集时复制对象用。在Eden区变满的时候 GC就会将存活的对象移到空闲的Survivor区间中根据JVM的策略在经过几次垃圾收集后任然存活于Survivor的对象将被移动到Tenured区间。 2Tenured区主要保存生命周期长的对象一般是一些老的对象当一些 对象在Young复制转移一定的次数以后对象就会被转移到Tenured区。 5、能不能解释一下方法区 与虚拟机栈类似。本地方法栈是为虚拟机执行本地方法时提供服务的。不需要进行GC。本地方法一般是由其他语言编写。 6、听过直接内存吗 它又叫做堆外内存线程共享的区域在 Java 8 之前有个永久代的概念实际上指的是 HotSpot 虚拟机上的永久代它用永久代实现了 JVM 规范定义的方法区功能主要存储类的信息常量静态变量即时编译器编译后代码等这部分由于是在堆中实现的受 GC 的管理不过由于永久代有 -XX:MaxPermSize 的上限所以如果大量动态生成类将类信息放入永久代很容易造成 OOM有人说可以把永久代设置得足够大但很难确定一个合适的大小受类数量常量数量的多少影响很大。所以在 Java 8 中就把方法区的实现移到了本地内存中的元空间中这样方法区就不受 JVM 的控制了,也就不会进行 GC也因此提升了性能。 7、什么是虚拟机栈 虚拟机栈是描述的是方法执行时的内存模型,是线程私有的生命周期与线程相同,每个方法被执行的同时会创建栈桢。保存执行方法时的局部变量、动态连接信息、方法返回地址信息等等。方法开始执行的时候会进栈方法执行完会出栈【相当于清空了数据】所以这块区域不需要进行 GC。 8、能说一下堆栈的区别是什么吗 第一栈内存一般会用来存储局部变量和方法调用但堆内存是用来存储 Java对象和数组的的。堆会GC垃圾回收而栈不会。 第二、栈内存是线程私有的而堆内存是线程共有的。 第三、两者异常错误不同但如果栈内存或者堆内存不足都会抛出异常。 栈空间不足java.lang.StackOverFlowError。 堆空间不足java.lang.OutOfMemoryError。 二、类加载器 1、什么是类加载器类加载器有哪些? JVM只会运行二进制文件而类加载器ClassLoader的主要作用就是将字节码文件加载到JVM中从而让Java程序能够启动起来。 常见的类加载器有4个 第一个是启动类加载器(BootStrap ClassLoader)其是由C编写实现。用于加载JAVA_HOME/jre/lib目录下的类库。 第二个是扩展类加载器(ExtClassLoader)该类是ClassLoader的子类主要加载JAVA_HOME/jre/lib/ext目录中的类库。 第三个是应用类加载器(AppClassLoader)该类是ClassLoader的子类主要用于加载classPath下的类也就是加载开发者自己编写的Java类。 第四个是自定义类加载器开发者自定义类继承ClassLoader实现自定义类加载规则。 2、说一下类装载的执行过程 类从加载到虚拟机中开始直到卸载为止它的整个生命周期包括了加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中验证、准备和解析这三个部分统称为连接linking 1.加载查找和导入class文件 2.验证保证加载类的准确性 3.准备为类变量分配内存并设置类变量初始值 4.解析把类中的符号引用转换为直接引用 5.初始化对类的静态变量静态代码块执行初始化操作 6.使用JVM 开始从入口方法开始执行用户的程序代码 7.卸载当用户程序代码执行完毕后JVM 便开始销毁创建的 Class 对象最后负责运行的 JVM 也退出内存 3、什么是双亲委派模型 如果一个类加载器收到了类加载的请求它首先不会自己尝试加载这个类而是把这请求委派给父类加载器去完成每一个层次的类加载器都是如此因此所有的加载请求最终都应该传说到顶层的启动类加载器中只有当父类加载器返回自己无法完成这个加载请求它的搜索返回中没有找到所需的类时子类加载器才会尝试自己去加载。 4、JVM为什么采用双亲委派机制 主要有两个原因。 第一、通过双亲委派机制可以避免某一个类被重复加载当父类已经加载后则无需重复加载保证唯一性。 第二、为了安全保证类库API不会被修改 三、 垃圾回收 1、简述Java垃圾回收机制GC是什么为什么要GC 为了让程序员更专注于代码的实现而不用过多的考虑内存释放的问题所以在Java语言中有了自动的垃圾回收机制也就是我们熟悉的GC(Garbage Collection)。 有了垃圾回收机制后程序员只需要关心内存的申请即可内存的释放由系统自动识别完成。在进行垃圾回收时不同的对象引用类型GC会采用不同的回收时机。 2、强引用、软引用、弱引用、虚引用的区别 强引用最为普通的引用方式表示一个对象处于有用且必须的状态如果一个对象具有强引用则GC并不会回收它。即便堆中内存不足了宁可出现OOM也不会对其进行回收 软引用表示一个对象处于有用且非必须状态如果一个对象处于软引用在内存空间足够的情况下GC机制并不会回收它而在内存空间不足时则会在OOM异常出现之间对其进行回收。但值得注意的是因为GC线程优先级较低软引用并不会立即被回收。 弱引用表示一个对象处于可能有用且非必须的状态。在GC线程扫描内存区域时一旦发现弱引用就会回收到弱引用相关联的对象。对于弱引用的回收无关内存区域是否足够一旦发现则会被回收。同样的因为GC线程优先级较低所以弱引用也并不是会被立刻回收。 虚引用表示一个对象处于无用的状态。在任何时候都有可能被垃圾回收。虚引用的使用必须和引用队列Reference Queue联合使用。 3、对象什么时候可以被垃圾器回收 如果一个或多个对象没有任何的引用指向它了那么这个对象现在就是垃圾如果定位了垃圾则有可能会被垃圾回收器回收。 如果要定位什么是垃圾有两种方式来确定第一个是引用计数法第二个是可达性分析算法。通常都使用可达性分析算法来确定是不是垃圾。 4、JVM 垃圾回收算法有哪些 我记得一共有四种分别是标记清除算法、复制算法、标记整理算法、分代回收。 5、你能详细聊一下分代回收吗 关于分代回收是这样的 在java8时堆被分为了两份新生代和老年代它们默认空间占用比例是1:2 对于新生代内部又被分为了三个区域。Eden区S0区S1区默认空间占用比例是8:1:1 具体的工作机制是有些情况 1当创建一个对象的时候那么这个对象会被分配在新生代的Eden区。当Eden区要满了时候触发YoungGC。 2当进行YoungGC后此时在Eden区存活的对象被移动到S0区并且当前对象的年龄会加1清空Eden区。 3当再一次触发YoungGC的时候会把Eden区中存活下来的对象和S0中的对象移动到S1区中这些对象的年龄会加1清空Eden区和S0区。 4当再一次触发YoungGC的时候会把Eden区中存活下来的对象和S1中的对象移动到S0区中这些对象的年龄会加1清空Eden区和S1区。 5对象的年龄达到了某一个限定的值默认15岁 那么这个对象就会进入到老年代中。当然也有特殊情况如果进入Eden区的是一个大对象在触发YoungGC的时候会直接存放到老年代当老年代满了之后触发FullGC。FullGC同时回收新生代和老年代当前只会存在一个FullGC的线程进行执行其他的线程全部会被挂起。 我们在程序中要尽量避免FullGC的出现。 6、讲一下新生代、老年代、永久代的区别 新生代主要用来存放新生的对象。 老年代主要存放应用中生命周期长的内存对象。 永久代指的是永久保存区域。主要存放Class和Meta元数据的信息。在Java8中永久代已经被移除取而代之的是一个称之为“元数据区”元空间的区域。元空间和永久代类似不过元空间与永久代之间最大的区别在于元空间并不在虚拟机中而是使用本地内存。因此默认情况下元空间的大小仅受本地内存的限制。 7、说一下 JVM 有哪些垃圾回收器 在jvm中实现了多种垃圾收集器包括串行垃圾收集器、并行垃圾收集器JDK8默认、CMS并发垃圾收集器、G1垃圾收集器JDK9默认 8、Minor GC、Major GC、Full GC是什么 它们指的是不同代之间的垃圾回收 Minor GC 发生在新生代的垃圾回收暂停时间短 Major GC 老年代区域的垃圾回收老年代空间不足时会先尝试触发MinorGC。Minor GC之后空间还不足则会触发Major GCMajor GC速度较慢暂停时间长 Full GC 新生代 老年代完整垃圾回收暂停时间长应尽力避免 四、JVM实践调优 1、JVM 调优的参数可以在哪里设置参数值 springboot项目可以在项目启动的时候java -jar中加入参数就行了 2、用的 JVM 调优的参数都有哪些 -Xms2g初始化推大小为 2g -Xmx2g堆最大内存为 2g -XX:NewRatio4设置年轻的和老年代的内存比例为 1:4 -XX:SurvivorRatio8设置新生代 Eden 和 Survivor 比例为 8:2 –XX:UseParNewGC指定使用 ParNew Serial Old 垃圾回收器组合 -XX:UseParallelOldGC指定使用 ParNew ParNew Old 垃圾回收器组合 -XX:UseConcMarkSweepGC指定使用 CMS Serial Old 垃圾回收器组合 -XX:PrintGC开启打印 gc 信息 -XX:PrintGCDetails打印 gc 详细信息。 3、平时调试 JVM都用了哪些工具呢 一般都是使用jdk自带的一些工具比如 jps 输出JVM中运行的进程状态信息 jstack查看java进程内线程的堆栈信息 jmap 用于生成堆转存快照 jstat用于JVM统计监测工具 还有一些可视化工具像jconsole和VisualVM等 4、假如项目中产生了java内存泄露你说一下你的排查思路 第一呢可以通过jmap指定打印他的内存快照 dump文件不过有的情况打印不了我们会设置vm参数让程序自动生成dump文件 第二可以通过工具去分析 dump文件jdk自带的VisualVM就可以分析 第三通过查看堆信息的情况可以大概定位内存溢出是哪行代码出了问题 第四找到对应的代码通过阅读上下文的情况进行修复即可 5、服务器CPU持续飙高你的排查方案与思路 第一可以使用使用top命令查看占用cpu的情况 第二通过top命令查看后可以查看是哪一个进程占用cpu较高记录这个进程id 第三可以通过ps 查看当前进程中的线程信息看看哪个线程的cpu占用较高 第四可以jstack命令打印进行的id找到这个线程就可以进一步定位问题代码的行号
http://www.pierceye.com/news/764431/

相关文章:

  • 高端网站开发培训免费企业黄页查询网站
  • 最新的网站开发技术全国新冠新增最新消息
  • 试玩app推广网站建设广州网站维护制作
  • 2018年网站设计公司阿里巴巴网官方网站
  • 英文网站常用字体icp备案的网站名称
  • 扬州恒通建设网站镇江润州区建设局网站
  • 关于网站制作的论文网站注册时间
  • 一个人可以备案几个网站做图去哪个网站找素材
  • 江苏建设管理信息网站自己可以做装修效果图的网站
  • html网站欣赏杭州战争网站建设
  • 乐清市做淘宝网站公司网站支付体现功能怎么做
  • 做网站公司促销海报本网站只做信息展示
  • 网站建设商城模板仿我喜欢网站源码免费
  • 工商服务网优化网站推广
  • 嘉兴网站系统总部做一个网站一般要多少钱
  • win10电脑做网站网站为什么有价值是
  • 凡科网站建设视频impreza 4 wordpress
  • 北京大兴地区网站建设国外网站设计欣赏分析
  • 如何在网站中加入百度地图广东深圳软件开发公司
  • 诸城网站建设报价兰州网站建设公司有哪些
  • 技术网站的费用怎么做会计分录潍坊模板开发建站
  • 男生女生在床上做的那个网站公众号推广一个6元
  • 湛江做网站设计公司北京婚恋网站哪家最好
  • 大型网站建设的难点是什么物联网技术
  • 怎么免费建个免费的站点写作网站5妙不写就删除
  • 深圳网站建设软件开发公司排名网站做301的坏处
  • ai网站制作的图片
  • 自己想开个网站怎么弄移动端网站设计欣赏
  • 国外网站建站上海品牌策划设计
  • 郑州网站制作选择乐云seo网站建设误区图