摘要:
(1)Collection (2)Map 先看它们的类图: (1)Collection (2)Map 我们针对不同的集合总结了一个列表 阅读全文
摘要:
前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案。正如之前文章中提到的JVM参数的设置需要根据应用的特性来进行设置,每个参数的设置都需要对JVM进行长时间的监测,并不断进行调整才能找到最佳设置方案。本文将介绍如果通过工具及Java api来监测JVM的运行状态,并 阅读全文
摘要:
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序 阅读全文
摘要:
Java开发有个很基础的问题,虽然我们平时接触的不多,但是了解它却成为Java开发的必备基础——这就是JVM。在C++中我们需要手动申请内存然后释放内存,否则就会出现对象已经不再使用内存却仍被占用的情况。在Java中JVM内置了垃圾回收的机制,帮助开发者承担对象的创建和释放的工作,极大的减轻了开发的 阅读全文
摘要:
类加载的过程和原理,以及双亲委派机制都已经讲解完成,那么我们今天讲解类加载的最后一节,那么就是类的卸载。 我们知道,当一个类被加载、连接和初始化之后,他的生命周期就开始了,当该类的class对象不再被引用之后,该类的生命周期也就结束了,之后,该类会被类加载器卸载!我们来看以下代码: 以下代码先通过自 阅读全文
摘要:
这一章我们主要是对双亲委派机制进行详细讲解: 前面我们知道类加载有系统自带的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、什么是消息中间件? 关注于数据的发送和接收,利用高效可靠地异步消息传递机制集成分布式系统。 2、什么是JMS? java - api Java 消息服务(Java Message Service)即JMS, 是一个Java 平台(不能跨语言)中关于面向消息中间件的API,用户两个应用程序之间,或 阅读全文