04
2020
04

请解释如下jvm参数的含义:

-server -Xms512m -Xmx512m -Xss1024K-XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly。Server模式启动 最小堆内存512m 最大512m 每个线程栈空间1m 永久代256 最大永久代2
04
2020
04

你们线上应用的JVM参数有哪些。

-server (64位无需此参数)Xms6000M -Xmx6000M -Xmn500M -XX:PermSize=500M -XX:MaxPermSize=500M -XX:SurvivorRatio=65536 -XX:MaxTenuringThreshold=0 -Xnoclassgc -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConc
04
2020
04

讲讲JAVA的反射机制。

Java程序在运行状态可以动态的获取类的所有属性和方法,并实例化该类,调用方法的功能 
04
2020
04

简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。

类加载器 就是根据指定全限定名称将class文件加载到JVM内存,转为Class对象。启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSpot),负责将存放在\lib目录或-Xbootclasspath参数指定的路径中的类库加载到内存中。其他类加载器:由Java语言实现,继承自抽象类ClassLoader。扩展类加载器(Extension ClassLoader):负责加载\lib\ext目录或java.ext.dirs系统变量指定的路径中的所有类库。应用
04
2020
04

JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作 内存等。

内存屏障:为了保障执行顺序和可见性的一条cpu指令 重排序:为了提高性能,编译器和处理器会对执行进行重拍 happen-before:操作间执行的顺序关系。有些操作先发生。 主内存:共享变量存储的区域即是主内存 工作内存:每个线程copy的本地内存,存储了该线程以读/写共享变量的副本 
04
2020
04

你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。

Serial、parNew、ParallelScavenge、SerialOld、ParallelOld、CMS、G1 CMS:一、初始标记:此时标记需要用户线程停下来;二、并发标记:此时标记可以和用户线程一起运行;三、重新标记:此时标记需要用户线程停下来,主要母的是为了对并发标记的垃圾进行审核;四、并发清除:与用户线程一起与运行进行垃圾清除;缺点:     1、CMS收集器对cpu资源非常敏感;     2、CMS收集器无法
04
2020
04

JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。

Eden和Survivor的比例是8:1.        首先说如果没有Survivor区会出现什么情况:此时每触发一次Minor GC,就会把Eden区的对象复制到老年代,这样当老年代满了之后会触发Major Gc(通常伴随着MinorGC,可以看做Full GC),比较耗时。 如果只有1个Survivor区,那当Eden区满了之后,就会复制对象到Survivor区,容易产生内存碎片化。严重影响性能。所以使用2个Survivor区,始终保持有一
04
2020
04

JVM的内存结构,Eden和Survivor比例。

JVM区域总体分两类,heap区和非heap区。heap区又分为:Eden Space(伊甸园)、Survivor Space(幸存者区)、Old Gen(老年代)。非heap区又分:Code Cache(代码缓存区);Perm Gen(永久代);(jdk1.8为元空间)Jvm Stack(java虚拟机栈);Local Method Statck(本地方法栈); 1个Eden区和2个Survivor区(分别叫from和to)。默认比例为8:1
04
2020
04

什么情况下会发生堆、栈内存溢出。

栈溢出:方法执行时创建的栈帧超过了栈的深度 ,最有可能就是方法递归调用。堆溢出:heap space表示堆空间,堆中主要存储的是对象。不断的new对象会导致堆中的空间溢出
30
2020
03

你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms,g1

30
2020
03

jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代等

答:对象优先在新生代区中分配,若没有足够空间,Minor GC; 大对象(需要大量连续内存空间)直接进入老年态;长期存活的对象进入老年态。如果对象在新生代出生并经过第一次MGC后仍然存活,年龄+1,若年龄超过一定限制(15),则被晋升到老年态。
30
2020
03

类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序

答:先静态、先父后子。 先静态:父静态 > 子静态 优先级:父类 > 子类 静态代码块 > 非静态代码块 > 构造函数 一个类的实例化过程: 1,父类中的static代码块,当前类的static 2,顺序执行父类的普通代码块 3,父类的构造函数 4,子类普通代码块 5,子类(当前类)的构造函数,按顺序执行。 6,子类方法的执行,