JVM基础
CrankZ
这个作者很懒,什么都没留下…
展开
-
JVM基础(三):Java垃圾回收
先来讲一下垃圾回收的前置知识。1.Java内存划分2.Java堆3.Minor GC与Full GC4.Java引用的四种状态5.Java对象在内存中的3种状态1.Java内存划分上面这张图就是jvm运行时的状态。具体划分为如下5个内存空间:1-3为线程私有,4-5为线程共享1、程序计数器:为了线程切换后能恢复到正确的执行位置。线程私有2、Java虚拟机栈:虚拟机栈描述的是Java方法执行的内存模...原创 2018-05-02 15:15:39 · 340 阅读 · 0 评论 -
设计模式(一):代理模式
1.代理模式1.1什么是代理模式代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。1.2为什么要用代理模式(代理模式解决了什么问题)?在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全...原创 2018-05-09 12:52:45 · 213 阅读 · 0 评论 -
JVM基础(二):Java内存模型
前置知识1.多线程问题2.主内存与工作内存1.多线程问题1.1为什么要使用多线程? 现在计算机的运算速度与它的存储和通信速度的差距太大,大量的时间都花费在磁盘I/O、网络通信和数据库访问上。如果不希望处理器在大部分时间里都处于等待其他资源的状态,就必须使用一些手段去把处理器的运算能力“压榨”出来,否则就会造成很大的浪费,而多线程就是很好的解决方法。1.2多线程有什么问题? 由于计算机的存储设备...原创 2018-05-02 20:49:40 · 277 阅读 · 0 评论 -
JVM基础(一):JAVA内存区域
Java内存区域上面这张图就是jvm运行时的状态。具体划分为如下5个内存空间:1-3为线程私有,4-5为线程共享1、程序计数器:为了线程切换后能恢复到正确的执行位置。线程私有2、Java虚拟机栈:虚拟机栈描述的是Java方法执行的内存模型:方法被调用时创建栈帧-->局部变量表->局部变量、对象引用。线程私有3、本地方法栈:为虚拟机执使用到的Native方法服务。线程私有4、Java堆:...原创 2018-05-03 22:13:57 · 254 阅读 · 0 评论 -
JVM基础(四):类加载机制与类加载器
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类加载的过程: 包括加载、链接(含验证、准备、解析)、初始化...原创 2018-05-08 23:20:12 · 348 阅读 · 0 评论 -
Java——七种垃圾收集器+JDK11最新ZGC
JDK1.8之前的堆内存示意图:从上图可以看出堆内存的分为新生代、老年代和永久代。新生代又被进一步分为:Eden 区+Survior1 区+Survior2 区。值得注意的是,在 JDK 1.8中移除整个永久代,取而代之的是一个叫元空间(Metaspace)的区域(永久代使用的是JVM的堆内存空间,而元空间使用的是物理内存,直接受到本机的物理内存限制)。JVM为什么要进行垃圾回收?...原创 2019-01-07 16:41:45 · 28006 阅读 · 10 评论