运营的网站,注册公司不经营一年费用,响应式网站有哪些2017,网站做统计目录 简述JVM类加载过程简述JVM中的类加载器简述双亲委派机制双亲委派机制的优点简述JVM内存模型简述程序计数器简述虚拟机栈简述本地方法栈简述JVM中的堆简述方法区简述运行时常量池简述Java创建对象的过程简述JVM给对象分配内存的策略Java对象内存分配是如何保证线程安全的如… 目录 简述JVM类加载过程简述JVM中的类加载器简述双亲委派机制双亲委派机制的优点简述JVM内存模型简述程序计数器简述虚拟机栈简述本地方法栈简述JVM中的堆简述方法区简述运行时常量池简述Java创建对象的过程简述JVM给对象分配内存的策略Java对象内存分配是如何保证线程安全的如何判断对象是否是垃圾简述java的引用类型简述标记清除算法、标记整理算法和标记复制算法简述分代收集算法简述Serial垃圾收集器简述ParNew垃圾收集器简述Parallel Scavenge垃圾收集器简述CMS垃圾收集器简述G1垃圾收集器简述MinorGC简述Ful GC常见内存分配策略JVM常见调优参数 简述JVM类加载过程
1)加载:
通过全类名获取类的二进制字节流。将类的静态存储结构转化为方法区的运行时数据结构。在内存中生成类的Class对象,作为方法区数据的入口2)验证:对文件格式,元数据,字节码,符号引用等验证正确性
3)准备:在方法区内为类变量分配内存并设置为0值。
4)解析:将符号引用转化为直接引用。
5)初始化:执行类构造器clinit方法,真正初始化。
简述JVM中的类加载器
BootstrapClassLoader启动类加载器:加载/lib下的jar包和类。由C++编写。ExtensionClassLoader扩展类加载器:/lib/ext目录下的jar包和类。由Java编写。AppClassLoader应用类加载器:加载当前classPath下的jar包和类。由Java编写。简述双亲委派机制
某个类加载器收到类加载请求之后,首先判断当前类是否被加载过。已经被加载的类会直接返回,如果没有被加载,首先将类加载请求转发给父类加载器,一直转发到启动类加载器只有当父类加载器无法完成时才尝试自己加载。 加载类顺序: BootstrapClassLoader-ExtensionClassLoader-AppClassLoader- CustomClassLoader 检查类是否加载顺序:CustomClassLoader-AppClassLoader- ExtensionClassLoader-BootstrapClassLoader
双亲委派机制的优点
避免类的重复加载。相同的类被不同的类加载器加载会产生不同的类,双亲委派保证了Java程序的稳定运行。保证核心API不被修改。简述JVM内存模型
线程私有的运行时数据区:程序计数器、Java 虚拟机栈、本地方法栈。 线程共享的运行时数据区:Java 堆、方法区。
简述程序计数器
程序计数器表示当前线程所执行的字节码的行号指示器。 程序计数器不会产生StackOverflowError和OutOfMemoryError。
简述虚拟机栈
Java 虚拟机栈用来描述 Java 方法执行的内存模型。线程创建时就会分配一个栈空间,线程结束后栈空间被回收。
栈中元