JVM
会coding的厨子
这个作者很懒,什么都没留下…
展开
-
JVM虚拟机运行数据区
1、运行时数据区: 线程私有:(虚拟机栈,本地方法栈,程序计数器) 线程共有:方法区,堆 虚拟机栈:局部变量表(数据基本类型、对象引用类型reference(指向对象地址的指针))、操作数栈、动态链接、方法出口信息等。 本地方法栈:使用的native方法。 2、堆:对象实例,和数组都要在堆上分配内存,可以分为新生代和老年代,新生代又分为:Eden 、form survi...原创 2019-06-21 10:09:17 · 110 阅读 · 0 评论 -
垃圾收集器与内存分配策略
1、垃圾回收只考虑堆和方法区 回收方法区:回收废弃常量和无用的类 对象存活判定算法: 1、引用计数法,缺点:很难解决循环引用的问题。 2、可达性分析算法 可以作为GCRoots的对象: 1、虚拟机栈中的引用对象; 2、方法区中类静态属性的引用对象; 3、方法区中常量引用的对象; 4、本地方法中的JNI引用对象; 引用的类型: 1、强引用:Objectob...原创 2019-06-21 10:13:17 · 128 阅读 · 0 评论 -
类加载机制
类的生命周期: 1、加载 2、验证(验证Class文件的字节流是否符合虚拟机要求) 3、准备(将类变量分配内存并设置初始值) 4解析 5初始化 6、使用 7、卸载 什么时候进行类的初始化:有且只有这五种方式,对一个类的主动引用 1、遇到new、getstatic、putstatic、invokstatic这四条字节码指令时,如果类没有进行初始化,则需要先触发其初始化,四条...原创 2019-06-21 10:17:09 · 137 阅读 · 0 评论 -
JVM调优
JVM调优: 1、 减少使用全局变量和大对象 2、设置新生代的大小和老年代的大小(默认堆最大物理内存的1/4) 3、选择合适的垃圾回收器(如果回收停顿时间优先的可以采用(parnew和CMS(标记清除,会有内存碎片,效率高)),如果吞吐量优先可以采用,parallelScavenge)(复制算法)和parallelOld(标记整理,效率低)) 4、 堆栈大小默认为1M。可以后期优化 ...原创 2019-06-21 10:18:41 · 197 阅读 · 0 评论