JVM
不怕慢,就怕站
一点一点改变自己!
展开
-
JVM(七)
gc垃圾回收机制1.引用计数法(了解)容易相互引用不释放资源2.复制算法(用在新生代)复制算法的基本思想是将内存存在两块,每次只用其中一块,当这一块内存用完,就将活着的对象复制到另一块上面。复制算法不会产生内存碎片。优点:没碎片 缺点:消耗空间伊甸园区 from区 to区第一次:伊甸园区里的对象被扫描后,存活的复制到from区,然后清空伊甸园区下一次:扫描伊甸园区和from区,...原创 2020-01-09 13:59:38 · 74 阅读 · 0 评论 -
JVM(六)
堆内存分为新生代和老年代,在1.7以前有永久代,1.8叫元空间,并且从堆内存中去掉,放到了物理内存中。所以物理上只有新生代和老年代。新生代分为伊甸园区,和幸存区1(from区)和幸存区2(to区) 大小比列 8:1:1新生代占堆内存的1/3,老年代占2/3。堆内存调优在idea开发工具里配置JVM启动参数-Xms2048m -Xmx2048m -XX:+PrintGCDet...原创 2020-01-09 12:35:05 · 82 阅读 · 0 评论 -
JVM(五)
大学的时候 程序=算法+数据结构实际开发中 程序=框架+业务逻辑数据结构中队列和栈必须要懂队列(FIFO) 先进先出 例子:排队打饭栈(FILO)(后进先出)例子:子弹弹夹栈也叫栈内存,主管java程序的运行,是在线程创建时创建,它的生命周期是跟随线程的生命周期,线程结束内存也就释放了,对于栈来说不存在垃圾回收问题,只要线程一结束栈就Over,生命周期和线程一致,是线程私有的。...原创 2020-01-08 17:11:43 · 62 阅读 · 0 评论 -
JVM(四)
方法区首先千万不要由这种错觉,方法区不是放方法的地方。供各线程共享的运行时内存区域,它存储了每一个类的结构信息,例如运行时常量池、字段、和方法数据、构造函数和普通方法的字节码内容。上面的是规范,在不同虚拟机里实现是不同的,最典型的是永生代和元空间。jdk1.8及以后叫元空间实例变量存在堆内存中,和方法区无关。说白了就是类的结构化信息(类似于模板 大Class)...原创 2020-01-08 16:15:39 · 70 阅读 · 0 评论 -
JVM(三)
程序计数器(Program Counter Register)类似与火车之间的钩子收集程序里的排班值日表每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指定的地址,也即将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过...原创 2020-01-08 15:29:39 · 59 阅读 · 0 评论 -
JVM(二)
Native method Stack(本地方法栈)java的多线程Thread t1 =new Thread(); t1.start(); t1.start();报错:Exception in thread "main" java.lang.IllegalThreadStateException at java.lang.Thread.start...原创 2020-01-08 14:48:56 · 78 阅读 · 0 评论 -
JVM(一)
五块堆 栈 方法区 本地方法栈 程序计数器ClassLoader 类加载器(快递员) 是要把java编译的.class文件加载到JVM它会加载文件开头有特定标识的(cafe babe)1.启动类加载器 bootStrapClassLoader (C++开发的) 它会加载 java下jre下lib下的rt.jar 随着应用启动加载到jvm中,简单说就是加载咱们日让开放用到的那些类,例如O...原创 2020-01-08 14:14:30 · 80 阅读 · 0 评论