摘要: 类加载的时机 首先, 我们来看一下类的生命周期, 如下图所示。其中验证、准备、解析3个阶段统称为连接。加载、验证、准备、初始化、卸载这5个阶段的顺序是确定的, 而解析阶段则不一定, 它在某些情况下可在初始化阶段之后运行, 这是为了支持Java语言的运行时绑定(也叫后期绑定或动态绑定)。 对于初始化阶 阅读全文
posted @ 2018-07-13 22:50 qingshanli 阅读(661) 评论(0) 推荐(1) 编辑
摘要: 概述 java语言的"编译期"分为前端编译和后端编译两个阶段。前端编译是指把*.java文件转变成*.class文件的过程; 后端编译(JIT, Just In Time Compiler)是指把字节码转变成机器码的过程。 在编译原理中, 将源代码编译成机器码, 主要经过下面几个步骤: Java中的 阅读全文
posted @ 2018-07-09 17:57 qingshanli 阅读(9376) 评论(0) 推荐(3) 编辑
摘要: 前言 在C++语言中, 程序员必须小心谨慎的处理每一项内存分配, 且内存使用完后必须手动释放曾经占用的内存空间。当内存释放不够完全时, 即存在分配但永不释放的内存块, 就会引起"内存泄漏"问题。 而在Java语言中, 它给了程序员一个美好的承诺: 程序员无需管理内存, 因为JVM会有GC去自动进行垃 阅读全文
posted @ 2018-07-06 21:41 qingshanli 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 首先在我这里下载 StarUML3.0 破解替换文件app.asar 链接:https://pan.baidu.com/s/1wDMKDQkKrE9D1c0YeXz0xg 密码:y65m 然后参照下图, 替换掉你自己StarUML安装目录中的app.asar文件即可。 替换完成后, 如下图, 成功破 阅读全文
posted @ 2018-07-03 23:32 qingshanli 阅读(2331) 评论(0) 推荐(1) 编辑
摘要: 前面几篇文章中, 系统的学习了下JVM内存结构、Java内存模型、Java对象模型, 但是发现自己还是对这三者的概念和区别比较模糊, 傻傻分不清楚。所以就有了这篇文章, 本文主要是对这三个技术点再做一个总结和区分, 加深印象。 JVM内存结构 在《Java虚拟机规范(Java SE 8)》中描述了J 阅读全文
posted @ 2018-07-02 23:46 qingshanli 阅读(4537) 评论(0) 推荐(1) 编辑
摘要: java对象 在内存中,一个Java对象包含三部分:对象头、实例数据和对齐填充。而对象头中又包含锁状态标志、线程持有的锁等标志。 oop-klass model OOP(Ordinary Object Pointer)指的是普通对象指针,而Klass用来描述对象实例的具体类型。 oop体系: 如上面 阅读全文
posted @ 2018-07-01 22:48 qingshanli 阅读(4174) 评论(0) 推荐(0) 编辑
摘要: java线程之可见性 volatile不需要加锁, 比synchronized更轻量级, 不会阻塞线程; 从内存可见性角度看, volatile读相当于加锁, volatile写相当于解锁。 synchronized既能保证可见性, 又能保证原子性; volatile只能保证可见性,无法保证原子性。 阅读全文
posted @ 2018-06-07 00:31 qingshanli 阅读(524) 评论(0) 推荐(0) 编辑
摘要: IntelliJ IDEA 简体中文专题教程 Jrebel 激活服务 navicat for mysql 10.0.11 简体中文破解版 完美脱离Windows!! Linux发行版第一系统 Manjaro 开箱教程 VMware虚拟机下Manjaro17.1.6安装详细教程 IntelliJ ID 阅读全文
posted @ 2018-05-31 10:02 qingshanli 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 一. java内存组成介绍 1.堆内存: 用于分配所有类实例和数组的内存 2.非堆内存: 方法区、JVM内部处理或优化、类结构(常量池,字段,方法数据)、方法、构造方法二. JVM内存区域模型 1.方法区(永久代、非堆) 1.1 用于存储虚拟机加载的类信息、常量、静态变量、以及在类中声明的各种方法和 阅读全文
posted @ 2018-05-27 21:38 qingshanli 阅读(420) 评论(0) 推荐(0) 编辑