随笔分类 - Jvm
摘要:不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序
阅读全文
摘要:Java开发有个很基础的问题,虽然我们平时接触的不多,但是了解它却成为Java开发的必备基础——这就是JVM。在C++中我们需要手动申请内存然后释放内存,否则就会出现对象已经不再使用内存却仍被占用的情况。在Java中JVM内置了垃圾回收的机制,帮助开发者承担对象的创建和释放的工作,极大的减轻了开发的
阅读全文
摘要:这一章我们主要是对双亲委派机制进行详细讲解: 前面我们知道类加载有系统自带的3种加载器,也有自定义的加载器,那么这些加载器之间的关系是什么,已经在加载类的时候,谁去加载呢?这节,我们将进行讲解。 一、双亲委派机制 JVM的ClassLoader采用的是树形结构,除了BootstrapClassLoa
阅读全文
摘要:这一章我们对初始化进行一下更深的理解: 类在初始化的时候,静态变量的声明语句以及静态代码块都被看作类的初始化语句,Java虚拟机会按照初始化语句在类文件中的先后顺序来依次加载它们。 上图中a的初始化其实经过了四步1、a被初始化为默认值02、a被赋予正确的初始值13、执行静态代码块,将a的值赋为24、
阅读全文
摘要:二、验证 验证这里可能大家会疑问了?我们的类不是通过JVM编译成的字节码的吗,为什么这里还要验证加载类的正确性,难道通过Java虚拟机的javac编译器生成的字节码还会有错误不成?当然,javac编译出来的类都是正确的,但是如果是通过其他途径生成的字节码呢?是不是正确的呢?就比如你自己建一个文本文件
阅读全文
摘要:首先,我们以一个最经典的例子来让大家知道什么是类的加载机制,上代码: 我们先猜测一下运行结果,然后我们再来调换一下单实例生成的顺序,将: 修改为 然而我们会惊奇的发现,结果不一样,第一个结果是counter1=1,counter2=0 第二个结果是 counter1=1,counter2=1, 这是
阅读全文
摘要:一、垃圾回收器如何工作? 1、Java虚拟机将采用一种自适用的垃圾回收技术。 停止-复制: 原理: 先暂停程序的运行(所以它不属于后台回收模式),然后将所有存活的对象从当前堆复制到另一个堆,没有被复制的全部都是垃圾。当对象被复制到新堆时,他们是一个挨着一个的,所以新堆保持着紧凑的排列,当对象从一处搬
阅读全文

浙公网安备 33010602011771号