Java类加载机制
一、类加载过程 类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了: 加载、验证、准备、解析、初始化、使用和卸载 这7个阶段。其中, 验证、准备和解析这三个部分统称为连接(linking) 。
其中,加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班的“开始”(仅仅指的是开始,而非执行或者结束,因为这些阶段通常都是互相交叉的混合进行,通常会在一个阶段执行的过程中调用或者激活另一个阶段),而解析阶段则不一定(它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定)。
加载“加载”(Loading)阶段是“类加载”(Class Loading)过程的第一个阶段,在此阶段,虚拟机需要完成以下三件事情:
1、 通过一个类的全限定名来获取定义此类的二进制字节流。
2、 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
3、 在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。
加载阶段既可以使用系统提供的类加载器来完成 ...
Java中的强引用、软引用、弱引用和虚引用
Java中的强引用、软引用、弱引用和虚引用Java执行GC判断对象是否存活有两种方式其中一种是引用计数。
引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。
在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。
从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。
Java中4种引用的级别和强度由高到低依次为:强引用 -> 软引用 -> 弱引用 -> 虚引用
引用类型
被垃圾回收时间
用途
生存时间
案例
强引用
从来不会
对象的一般状态
JVM停止运行时终止
通过new或反射创建的引用对象
软引用
当内存不足时
对象缓存
内存不足时终止
弱引用
正常垃圾回收时
对象缓存
垃圾回收后终止
虚引用
正常垃圾回收时
跟踪对象的垃圾回收
垃圾回收后终止
DirectByteBuffer堆外内存释放
参考文章
理解Java的强引用、软引用 ...
Java常用日志框架
Java常用日志框架介绍
Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。
Log4j2 Apache Log4j 2是apache开发的一款Log4j的升级产品。
Commons Logging Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging。
Slf4j 类似于Commons Logging,是一套简易Java日志门面,本身并无日志的实现。(Simple Logging Facade for Java,缩写Slf4j)。
Logback 一套日志组件的实现(slf4j阵营)。
Jul (Java Util Logging),自Java1.4以来的官方日志实现。
Java常用框架历史
1996年早期,欧洲安全电子市场项目组决定编写它自己的程序跟踪API(Tracing API)。经过不断的完善,这个API终于成为一个十分受欢迎的J ...
Netty简介
官网简介: Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.用一句话来概括: Netty是一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。
特征设计
适用于各种传输类型的统一API - 阻塞和非阻塞套接字
基于灵活且可扩展的事件模型,可以清晰地分离关注点
高度可定制的线程模型 - 单线程,一个或多个线程池,如SEDA
真正的无连接数据报套接字支持(自3.1起)
易用
详细记录的Javadoc,用户指南和示例
没有其他依赖项,JDK 5(Netty 3.x)或6(Netty 4.x)就足够了
性能
吞吐量更高,延迟更低
减少资源消耗
最小化不必要的内存复制
安全
完整的SSL / TLS和StartTLS支持
架构示意图
使用Hexo搭建个人博客
记录一下自己使用Hexo搭建个人博客的过程,以及搭建过程中踩过的坑。 Hexo简介这里引用Hexo官网介绍:
快速、简洁且高效的博客框架A fast, simple & powerful blog framework.
一、为什么选择Hexo之前也想过自己用java写一个博客系统,顺便能学习一些开发技术。通过一段时间的折腾,主要发现有一下几个问题,于是放弃了自己开发的计划转而采用开源框架。
使用java自行开发个人博客系统遇到的问题:
开发周期长:虽然可以使用一些脚手架快速搭建博客系统框架,但是仍需要个人大量的开发时间去实现及调试代码。
UI样式不美观: 由于本人是非前端开发人员,只能通过前端的一些脚手架去搭建博客前端,UI设计不够美观。
偏离初始目标:自己开发博客的目标是通过开发过程提高编码水平,但是随着在工作中的成长,知识面已经铺开,搭建个人博客已经无法带来技术深层面成长,只是重复造轮子罢了。
hexo 博客的优点
支持MarkDown格式
使用Node.js生成静态文件,部署简便
有丰富的主题可以选择
有丰富的插件扩展性强
选择hexo搭建个人博客完全满 ...
Forecasting Research on the Wireless Mesh Network Throughput Based on the Support Vector Machine
《基于支持向量机的无线Mesh网络吞吐量预测》 —— 论文