java常量池技术 java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,常量池存在于方法区中 Constant pool: #1 = Methodre ...
分类:
编程语言 时间:
2019-05-14 12:52:06
阅读次数:
220
Java虚拟机内存区域总结:Java虚拟机相当于一个抽象的计算机操作系统, 其管理的内从区域大体上可以分为栈和堆,就像c或c++中对内存的分类一样, 但这样的分类对于Java虚拟机来说太过粗浅, 实际上Java虚拟机管理的内存区域分为程序计数器、虚拟机栈、本地方法栈、堆和方法区, 根据各区域是属于线 ...
分类:
编程语言 时间:
2019-05-13 22:44:15
阅读次数:
112
注册树模式 注册树模式(Registry Pattern)又叫注册模式、注册器模式。注册树模式通过将对象实例注册到一棵全局的对象树上,需要的时候从对象树上采摘的模式设计方法。 单例模式在整个项目中创建唯一实例的问题;工厂模式封装了对象的创建方式(工厂方法——用一个抽象方法,抽象工厂——用一簇抽象方法 ...
分类:
其他好文 时间:
2019-05-13 09:20:02
阅读次数:
99
1、 HashMap 加入了红黑树 2、ConcurrentHashMap 使用了CAS无锁机制 3、 永久区没有了,成了元空间(MetaSpace)。相对于方法区,直接使用的物理内存!相应的PremGenSiz 、 MaxPremGenSize 参数失效了 取而代之的是:MetaSpaceSize ...
分类:
编程语言 时间:
2019-05-13 01:15:51
阅读次数:
127
二、垃圾收集 垃圾收集主要是针对堆和方法区进行。 程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。 判断一个对象是否可被回收 1. 引用计数算法 给对象添加一个引用计数器,当对象增加一个引用时计数器加 1, ...
分类:
编程语言 时间:
2019-05-12 15:45:08
阅读次数:
149
业务逻辑:声明一个变量用于统计个数,这个变量应该被类的实例共享(可以被所有的对象访问); 所以这个变量应该放在方法区。 所以这样的变量应该由static来声明 static可以修饰变量、方法、代码块和内部类 static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。 可以在对 ...
分类:
其他好文 时间:
2019-05-11 23:11:40
阅读次数:
185
1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向 ...
分类:
编程语言 时间:
2019-05-11 21:22:40
阅读次数:
108
GC回收java堆和方法区的内存,判断对象是否存活采用可达性分析算法。 GC算法有四种:标记-清除算法、复制算法、标记-整理算法、分代收集算法,当前商业虚拟机都采用分代收集算法:新生代和老年代,其中新生代采用复制算法,老年代采用标记清除或标记整理算法。 七种垃圾收集器: 1、Serial收集器 2、 ...
分类:
编程语言 时间:
2019-05-11 09:31:56
阅读次数:
140
2.1.哪些内存需要回收? jvm的内存结构包含五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。其中,程序计数器、虚拟机栈、方法栈3个区域随线程而生,随线程而灭,因此这届个区域的内存和回收都具备确定性,就不需要过多回收的问题,因为方法结束时,内存自然就跟着回收了,而java堆区和方法区不一 ...
分类:
其他好文 时间:
2019-05-09 20:23:03
阅读次数:
135
《研磨设计模式》中的定义:保证一个类仅有一个实例,并提供它的一个全局访问点。 而单例模式的本质便是——控制实例数目。 一、介绍 1、单例模式和静态方法区别 简单的一个懒汉式单例模式 静态方法 调用对比 1、单例模式 关于单例模式的概念这里不再多说,单例模式的好处有如下几个: 1)只有一个实例对象,节 ...
分类:
其他好文 时间:
2019-05-04 11:58:38
阅读次数:
130