自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 java解剖学:对象内存布局

零、快速入门1. 每个java对象在内存中映射一个C++对象,C++对象只存储java对象头信息(mark和klass),C++头对象之后紧跟着java成员变量2. java对象内存布局,主要是针对C++头对象之后的内存区域做编排3. 常见的内存布局方式,是按照成员变量定义顺序依次分配内存地址(例如C++),但因为存在内存对齐机制,顺序分配会引入不少空白区域4. hotspot虚拟机不使用变量声明顺序确定内存地址顺序,而是将相同类型的变量连续分布,同时长类型(double/long)在前,短

2020-10-26 15:52:47 244 1

原创 JVM局部变量表

    局部变量表是JVM线程栈中每个frame中一个组成单元(具体细节见《JVM线程栈》),存放线程在当前方法执行过程中依然有效的局部变量。局部变量表的长度在类编译过程中就能确定,这样有利于frame初始化。    void fun () {        int a = 0;        int b = 1;        int c = 2;    }    fun的局部...

2018-10-19 11:16:40 875

原创 JVM线程栈

JVM栈中存放了一组frame(栈帧),以LIFO的方式存储,方法调用时生成一个frame,方法执行结束时删除一个frame。frame中存放方法调用时调用者的执行状态快照,在被调方法执行结束后,用于恢复方法调用前的程序执行状态。栈帧的概念在c或c++语言编译出来的汇编语言中也存在,用ESP和EBP定义栈顶和栈底。汇编和JVM的栈帧功能都一样,只是汇编的frame直接给cpu看,而JVM里的fra...

2018-10-19 10:48:48 1326

原创 JVM常量池

java语义中的常量池有三个概念:1. 一个是class文件中的常量池,这里存放着类、字段和方法的名称,静态成员变量的值,字符串常量等一系列类相关的信息:Constant pool:#1 = Class #2 // com/learn/clazz/file/SampleClass#2 = Utf8 com/learn/clazz/file/SampleClass#3 = Cl...

2018-10-19 10:20:55 434

原创 spring依赖注入

一、 注入方式spring依赖注入有三种典型的方式,一种通过xml中property标签注入,一种通过注解注入,一种是自动注入(默认关闭)1. xml<bean class="com.learn.spring.xml.SingletonBean"> <property name="property" value="test2" /></bean&gt...

2019-04-25 20:04:07 615

原创 FastClass和Reflex性能比较

Cglib中提供FastClass增强功能,FastClass顾名思义是一个能让被增强类更快调用的Class,主要针对调用方法是变量的场景,用于替代反射调用。FastClass的实现逻辑,是生成增强类实现invoke方法,invoke方法中,用switch语义将被增强类的所有方法调用枚举出来。用户使用FastClass.invoke方法,传入方法签名和被调用实例,从而达到不使用反射就能实现不确...

2019-03-18 16:06:54 4090 6

原创 class文件内容解析

class文件基本数据结构:使用javac编译后的文件是.class文件,程序运行时,class文件被classLoader加载到JVM成为class对象,随后便可以创建该类的对象。class文件是二进制文件流,记录类相关信息,可以被JVM解析。class文件内容并不复杂,结构如下:ClassFile { u4 magic; u2 ...

2018-11-01 16:17:05 998

原创 JVM运行时内存区域

1. JVM数据区域JVM数据区域分两类,一类生命周期随vm,一类生命周期随thread。 2. pc寄存器(线程独占)JVM在设计上支持多个线程同时执行(硬件上适配多核cpu是真正意义上的并行),为此每个线程都有属于自己的pc register,注意这里的指令寄存器并不是8086这样cpu架构里的pc register,JVM里的pc register只是抽象的概念,并不对应具体...

2018-10-19 10:25:33 172

原创 spring注解小结

spring提供了一系列注解,有很多作用,此处做归纳和总结。1. @Configuration作用在类上,声明一个class需要被spring解析以扩充beanDefinition。@Configration注解同时被@Component注解修饰,因此具有被自动加载的特点,被@Configuration修饰的类本身也会作为definition注册。value属性是Configurati...

2018-09-10 14:08:00 1010

原创 java项目启动研究

一直以来都是通过tomcat启动java应用,从未考虑过应用具体启动流程。本例分析从main函数启动的方式,加深对java底层执行的理解。一、 使用java命令启动xxx.java1. 首先用javac编译文件2. 使用 java MainClass.class 执行文件,我首次尝试的时候总是抛出异常:错误: 找不到或无法加载主类 MainClassMainClass.java 内容如下:pack...

2018-06-29 12:08:56 1096 3

原创 java泛型小结

一、概述泛型是java1.5引入的概念,用于规范用户输入类型,泛型使用的一个误区是将泛型当做类型或变量看待,从而尝试例如 T.class,new T() 等操作,实际上泛型只是一个契约,约定了在本类里用到相同泛型的地方类型一致,使用时,跨类之间契约可传递。泛型的好处:1. 实现java类型安全,相当于用户提供泛型信息,编译器帮用户做类型校验,减少用户错误编码造成的类型异常。2. 使...

2018-06-20 19:40:06 218

原创 java try...catch...finally机制详解

一、 问几个问题在说明try...catch...finally机制前,先出几道题目作为文章的引子。有这样一种结构try {      A;                 // A代表被try包裹的代码块} catch (FileNotFoundException e) {      B;} finally {      C;}1. 什么是try...ca

2016-06-23 21:59:37 410

原创 log4j是什么,log4j解决了什么问题,log4j怎么用

Log4j是由Apache提供的日志操作包,用于帮助用户处理日志信息。1. 为什么要用日志管理类,好像没有这些日志管理类,代码也可以正常跑起来。答:日志管理类确实不影响代码正常执行,但是当代码复杂程度越来越高,我们需要日志管理类来帮我们记录代码运行状态,用以帮助我们理解代码的执行情况。此时使用封装好了的成熟的日志管理类,就能在实现我们需求的同时简化我们的操作。

2015-09-17 19:58:06 2588

原创 win7系统下使用secureCRT建立与VMware上fedora17的通信

一. 使fedora17可以上网1.

2014-08-12 14:41:09 546

原创 使用keil4开发FL2440开发板 keil4配置

一.新建一个keil4工程并进行如下配置

2014-06-05 20:40:35 902

Android官方sample

android-18 官方SDK sample

2015-08-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除