自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 10 程序编译与优化(个人理解,若有不足,敬请指出)

Java语言的“编译期”是一段不确定的过程,因为它可能指的是(1)前端编译器把java文件转变成class字节码文件的过程,也可能指的是虚拟机(2)后端运行期间编译器(JIT)把字节码转变成机器码的过程。更或者是(3)静态提前编译器直接将Java文件转换成机器码文件。从JDK1.3开始,虚拟机设计团队就把对性能的优化集中到了后端的即时编译中,这样可以让那些不是由Javac产生的Class文件(如...

2019-08-10 16:49:30 281

原创 9 方法调用(个人理解,若有不足,敬请指出)

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。在程序运行时,进行方法调用是最为普遍、频繁的操作。前面说过 Class 文件的编译过程是不包含传统编译中的连接步骤的,一切方法调用在 Class 文件里面存储的都只是符号引用,而不是方法在运行时内存布局中的入口地址(相当于之前说的直接引用)。这个特性给 Java 带...

2019-08-10 16:48:59 167

原创 8 类加载机制(个人理解,若有不足,敬请指出)

类加载机制在了解类加载机制前了解一下class结构, 浅显易懂,我这么蠢的都能看懂:https://blog.csdn.net/u010349169/column/info/jvm-principle1-类加载的时机类加载就是把类的class文件加载到运行时数据区并对数据存放等一系列操作,那么类加载时间又是何时呢?在类的生命周期中(加载、连接包括【验证,准备,解析:因为动态绑定的因素可以在...

2019-08-10 16:48:30 128

原创 7 Tlab(个人理解,若有不足,敬请指出)

Java对象在完成正确的堆内存空间分配时采用二种方式:一种是cas失败重试,另一种是Tlab。tlab是线程本地分配内存的英语缩写,从语义可知是一个线程专用的内存分配区域,他也存在堆中,但是也独立于堆中空间。我们在为一个对象在堆中分配空间时,也有其他线程在为对象在堆内存分配空间,于是就存在空间的竞争,在激烈的竞争场合内存分配的效率比较低下,所以考虑以上的情况出现,我们采用TLAB线程专属空间避免...

2019-08-10 16:47:52 288

原创 6 对象的内存布局和访问定位(个人理解,若有不足,敬请指出)

1 对象的创建1 类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。2 分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆...

2019-08-10 16:47:22 94

原创 5 垃圾回收算法(比较简单,可以去看Java性能调优指南,不想写)

jvm并行与并发:并行:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。并发:指用户线程与垃圾收集线程同时执行(但不一定是并行,可能会交替执行),用户程序在继续运行,而垃圾收集器运行在另一个 CPU 上。2.1. 标记-清除算法(Mark-Sweep)最基础的垃圾回收算法,分为两个阶段,标注和清除。标记阶段标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间。该算法最...

2019-08-10 16:46:53 91

原创 4 对象生死状态判断(个人理解,若有不足,敬请指出)

1 垃圾回收针对地址Java的内存区域分为程序计数器、虚拟机栈、本地方法栈、Java堆和方法区,而且其中的程序计数器、虚拟机栈和本地方法栈都是线程独立的,也就是说这三块内存区域的生命周期与线程是同生共死的。栈中帧栈在类结构确定的时候就已经知道该分配多少内存了,所以当线程结束的时候,内存也跟着一起回收了,从这个角度看,这三块的内存区域的内存分配和垃圾收集就比较固定了。反观Java堆和方法区,比如我...

2019-08-10 16:46:14 134

原创 3 常量池技术 (个人理解,若有不足,敬请指出)

1 常量池分类常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。他包括以下三个不同常量池类别:Class文件常量池class文件中的属于编译阶段,class文件常量池主要用于存放两大类常量:字面量(Literal)和符号引用量(Symbolic References),字面量相当于Java语言层面常量的概念,如文本字符串,声明为final的常量值等,符号引用则属于编译原...

2019-08-10 16:45:16 171

原创 2 运行时栈桢结构(个人理解,若有不足,敬请指出)

栈桢是用于虚拟机进行方法调用和方法执行时的数据结构,它是虚拟机运行时数据区虚拟机栈的栈元素。栈元素存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。每一个方法在执行时都对应着一个栈桢在虚拟机栈里面从入栈到出栈的过程。在编译代码的时候,栈桢中需要多大的局部变量表,操作数栈的深度已经确认。在活动栈桢中,只有位于栈顶的栈桢才是有效的,称为当前栈桢,与这个栈桢对应的方法称为当前方法。1-...

2019-08-10 16:44:44 225

原创 1 Java运行时数据区了解(个人理解,若有不足,敬请指出)

注意:本文说的是Java运行时数据区Java虚拟机在执行Java程序的过程中会把它管理的内存划逻辑上分成若干个不同的数据区域。这些不同区域一些是共享一些是私有的,他们相互协作管理程序。线程私有: 程序计数器 虚拟机栈 本地方法栈线程共享的: 堆 方法区1 程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取...

2019-08-10 16:44:10 139

原创 6—多态

个人观点,若有不足,敬请指出多态性:同一个对象(事物),在不同时刻体现出来的不同状态。父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。好处:提高了程序的扩展性、灵活性、简化性;弊端:当父类引用指向子类对象时,虽提高了扩展性,但只能访问父类中具备的方法,不可访问子类中的方法;即访问的局限性。多态是在继承和接口的基础下重写方法实现的,程序中定义的父类引用变量所指向的具体类型。在编程...

2019-04-05 23:22:13 114

原创 5—继承

继承(个人观点,若有不足,敬请指出)1 什么是继承继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加“新”的数据或“新”的功能,也可以用父类的功能,但不能选择性地继承父类,只能继承“一个”。通过使用继承我们能够非常方便地“复用”以前的代码,能够大大的提高开发的效率。2 继承特点继承定义了类如何相互关联,共享特性。对于若干个相同或者相识的类,我们可以抽象出他们共有的行为或者...

2019-04-05 23:21:20 69

原创 4—封装

个人观点,若有不足,敬请指出封装是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。jAVA中的所有程序都是写在类中的,类也能当做一种封装。封装的好处:在面向对象中封装是指隐藏对象的属性和实现的细节,仅对外提供公共访问方式。在类定义中用private关键字来实现封装。一是用private把类的细节与外界隔离起来,从而实现数据项和方...

2019-04-05 23:20:54 72

原创 3—final

final关键字(个人观点,如有不足,敬请指出)1—final变量final的作用随着所修饰的类型而不同final修饰类中的属性变量。无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变。这个值,对于基本类型来说,变量里面放的就是实实在在的值,如1,“abc”等。而引用类型变量里final的作用随着所修饰的类型而不同,引用类型变量里面放的是个地址,所以用fin...

2019-04-05 15:39:56 86

原创 2—static

static(个人观点,若有不足,敬请指出)静态这哥们不属于某一个类的实列化对象,他是属于类的,他具有三个鲜明的特点(1)在类加载的时候,就进行创建和初始化或执行代码。(2)他是被所有对象共享的。(3)一个类只有一份1—静态变量static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象...

2019-04-05 15:39:14 130

原创 1—数据类型

Java数据类型1—基本数据类型大小byte 1字节short 2字节int 4字节long 8字节 float 4字节double 8字节char 2字节boolean 1字节2—数据类型的转换数据类型之间会出现转换的情况,一种转换成另一种会出现精度损失的情况:(1)一个大数值转成一个小数值,就可能出现大数值的值大于小数值数据类型的最大数值,就可能出现丢失精度;(2)浮点...

2019-04-04 00:09:13 101

空空如也

空空如也

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

TA关注的人

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