摘要: 学习Java GC机制,可以帮助我们在日常工作中 排查各种内存溢出或泄露问题,解决性能瓶颈,达到更高的并发量,写出更高效的程序。 我们将从4个方面学习Java GC机制, 1,内存是如何分配的; 2,哪些内存需要回收; 3,在什么情况下执行GC以及执行GC的方式; 4,如何监控和优化GC机制。 先来 阅读全文
posted @ 2017-04-23 19:06 张俊鸿 阅读(656) 评论(0) 推荐(0) 编辑
摘要: Java垃圾收集(Garbage Collection,GC) 某一个时点,一个对象如果有一个以上的引用(Rreference)指向它,那么该对象就为活着的(Live), 否则死亡(Dead),视为垃圾,可被垃圾回收器回收再利用。 垃圾回收操作需要消耗CPU、线程、时间等资源,所以容易理解的是垃圾回 阅读全文
posted @ 2017-04-23 18:54 张俊鸿 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 执行引擎是Java虚拟机的核心组成部分之一。 首先,想想C++和Java在编译和运行时到底有啥不一样? 下图左边,C++发布的就是机器指令, 而下图右边Java发布的是字节码,字节码在运行时通过JVM的类加载器,加载到JVM的虚拟内存的方法区, 再通过编译器、解释器做一次转换生成机器指令。执行引擎正 阅读全文
posted @ 2017-04-23 17:46 张俊鸿 阅读(854) 评论(0) 推荐(0) 编辑
摘要: 反射 到底什么是反射(Reflection)呢? 反射有时候也被称为内省(Introspection),事实上,反射,就是一种内省的方式, Java不允许在运行时改变程序结构或类型变量的结构,但它允许在运行时去探知、加载、调用在编译期完全未知的class,可以在运行时加载该class,生成实例对象( 阅读全文
posted @ 2017-04-23 15:25 张俊鸿 阅读(387) 评论(1) 推荐(0) 编辑
摘要: 从java的动态性到类加载机制 我们知道,Java是一种动态语言。 那么怎样理解这个“动态”呢? 或者说一门语言具备了什么特性,才能称之为动态语言呢? 对于java,我是这样理解的。 我们都知道JVM(java虚拟机)执行的不是本地机器码指令, 而是执行一种称之为字节码的指令(存在于class文件中 阅读全文
posted @ 2017-04-23 13:58 张俊鸿 阅读(427) 评论(1) 推荐(0) 编辑
摘要: 1.JVM虚拟机的构成 什么是Java虚拟机? 作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。 但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。 在本文中,我会写下我对虚拟机的理解。 先看网上搜索到的比较靠谱的解释: 虚拟机是一种抽象 阅读全文
posted @ 2017-04-23 13:11 张俊鸿 阅读(855) 评论(2) 推荐(0) 编辑