关闭

JVM---虚拟机类加载机制与类加载器

虚拟机类加载机制 把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。 类从被加载到虚拟机内存中开始,到卸载出内存为止,整个生命周期包括:   加载---连接(验证,准备,解析)---初始化---使用---卸载 对于初始化阶段,虚拟机规范严格规定了有且只有5种情况必须进行初始化操作(加载,验证,准备自然需要...
阅读(50) 评论(0)

JVM----Class类文件结构

Class文件的结构 Class文件用类似C语言结构体来存储数据,这种伪结构只有2种数据类型:无符号数和表。无符号数属于基本数据类型,以u1,u2,u4,u8分别代表1,2,4,8个字节的无符号数,表由多个无符号数或者其他表作为复合数据类型,习惯以“_info”结尾。 1.魔数: 很多文件存储标准中都采用魔数来进行身份识别,如gif的文件头就存有魔数,使用魔数主要为了安全考虑,因为拓展...
阅读(52) 评论(0)

JVM---内存分配策略

普遍的内存分配规则 1.对象优先在Eden区分配,当Eden区没有足够空间时,将发起一次Minor GC。   新生代GC(Minor GC):指发生在新生代的垃圾收集动作,非常频繁,回收速度也较快。   老年代GC(Major GC/Full GC): 指发生在老年代的GC,经常伴随至少一次的Minor GC,速度比Minor GC慢10倍以上 2.大对象直接进入老年代   所...
阅读(67) 评论(0)

JVM----垃圾回收(GC)

1.引用计数算法  给对象添加一个引用计数器,每当有一个地方引用他时,计数器就加1;当引用失效,计数器减1;任何时刻计数器为0的对象就是不可能再被使用的。但是主流的虚拟机中没有选用它,因为它很难解决对象之间相互循环引用的问题。 2.可达性分析算法 这个算法的基本思想就是:通过一系列的“GC Roots”的对象做为起始点,从这些节点向下搜索,搜索所走过的路径称为引用链,当一个对象到GC roo...
阅读(47) 评论(0)

JVM--运行时数据区以及对象的创建,内存布局、访问

1.运行时数据区 程序计数器:线程私有的内存。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转都需要依赖这个计数器来完成。 如果一个线程正在执行java方法,则计数器记录的正在执行的虚拟机字节码指令的地址;如果正在执行的是native方法,则计数器的值为空。 唯一的无OOM情况的区域。 java虚拟机栈:线程私有的。每个方法在执行的同时都会创建...
阅读(62) 评论(0)

重写Hashcode()和equals()

当对一个对象有不同的判断equals的标准时,我们可以重写equals方法。重写equals必须按一下步骤 定义个一个类。 class Student {       private String name;       private int age;              // getters and setters   }   重写时要遵循以下三步: 1. ...
阅读(57) 评论(0)

Class.forName 和 ClassLoader的区别

Java中class是如何加载到JVM中的: 1.class加载到JVM中有三个步骤     装载:(loading)找到class对应的字节码文件。     连接:(linking)将对应的字节码文件读入到JVM中。     初始化:(initializing)对class做相应的初始化动作。 2.Java中两种加载class到JVM中的方式     2.1:Class.forNam...
阅读(60) 评论(0)

InvocationHandle的invoke方法

在学习代理模式中接触到了动态代理的相关内容,这是AOP的核心内容。先用一个例子说明 动态代理 的使用 //接口(动态代理只能代理接口) public interface Subject { public void request(); } //接口实现 :实现了Subject的request()方法 public class RealSubject i...
阅读(52) 评论(0)

java常用设计模式

1.单例模式(又分为懒汉模式,饿汉模式) 应用场景:有些对象只需要一个就够了 作用:保证整个应用程序中实例有且只有一个。 饿汉模式:此即单例模式模式创建的饿汉模式(不管用户是否需要,只要类加载,因为是static变量,随着类加载就加载,就会去创建该单例模式的对象,即假设总是处于饥饿状态!!!)    懒汉模式: 饿汉模式和懒汉模式的区别: 饿汉模式加载类慢,...
阅读(46) 评论(0)

java各常用容器总结

阅读完java编程思想关于容器的介绍后,仅列出个人总结,欢迎纠正  LinkedList:链表,底层定义了一个静态的内部类Node作为元素。空间复制度较小,增删改效率高,查找比较慢。 ArrayList: 底层采用数组实现,因此对他的操作应该尽量避免增删操作,查询速度快。 HashSet: 该容器实际就是一个HashMap,只不过HashMap中的Value被置为同一个无意元素。正因...
阅读(66) 评论(0)

String类 StringBuffer类 StringBuilder类

String类:         java源码中,对string的成员变量定义,private final char value[],因此String类是不可变String s = "ABCabc"; System.out.println("s = " + s); s = "123456"; System.out.println("s = " + s); 打印结果为s = A...
阅读(69) 评论(0)

关于Git Github的使用

Git教程 廖雪峰         http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000...
阅读(141) 评论(0)

Service层和Dao层

我们都知道,标准主流现在的编程方式都是采用MVC综合设计模式,MVC本身不属于设计模式的一种,它描述的是一种结构,最终目的达到解耦,解耦说的意思是你更改某一层代码,不会影响我其他层代码,如果你会像spring这样的框架,你会了解面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。初期也许都是new对象去调用下一层,比如你在业务层new一个DAO类的对象,调用DAO类方法访问数据...
阅读(56) 评论(0)

《Java编程思想》阅读笔记

垃圾回收器如何工作-P90      在某些Java虚拟机中,堆的实现如同一个传送带,每分配一个对象,就往前移动一格。这意味着对象存储空间的分配十分快。Java的“堆指针”只是简单移动到尚未分配的区域。垃圾回收器工作时,将一面回收空间,一面使堆中的对象紧凑排列。         垃圾回收机制         1.引用计数:每个对象有有一个引用计数器,当有引用接入对象时,计数器加1,当引用离开...
阅读(86) 评论(0)
    个人资料
    • 访问:945次
    • 积分:128
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条