- 博客(5)
- 收藏
- 关注
原创 StringBuffer类-构造方法和StringBuffer中length()和capacity()区别
一、构造方法 1、空参构造 new StringBuffer(); 默认分配的初始化缓冲区的大小是16 源码: public StringBuffer() { super(16); } 2、new StringBuffer(int capacity); 默认初始化缓冲区大小是其传入的值的大小 源码: public StringBuffer(i...
2018-10-08 14:22:03
1295
原创 jvm学习(三)之内存分配及回收策略
1,对象优先分配到新生代的Eden区 大多数情况下,对象在新生代eden区中分配,当Eden区没有足够的空间分配,虚拟机将发起一次minor GC 2,大对象直接进入老年代 需要大量连续内存空间的Java对象称为大对象,大对象的出现会导致提前触发垃圾收集以获取更大的连续的空间来进行大对象的分配,JVM参数-XX:PretenureSizeThreshold的意思就是将体积大于这个设置值的对...
2018-10-06 12:41:55
241
原创 java的四种引用方式
java的四种引用方式: Java中提供这四种引用类型可以让程序员通过代码的方式决定某些对象的生命周期,且有利于JVM进行垃圾回收。 1,强引用 String test = new String("test"); 是平常中使用最多的引用,当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误也不会回收。 2,软引用 如果内存空间足够,垃圾回收器就不会回收它...
2018-10-05 20:31:49
224
原创 jvm学习(二)之垃圾回收算法
1,判断对象是否回收 1.1、引用计数算法 对象中添加一个引用计数器,如果引用计数器为0则表示没有其它地方在引用它。如果有一个地方引用就+1,引用失效时就-1。实际上在大部分Java虚拟机中并没有采用这种算法,因为它会带来一个致命的问题——对象循环引用。对象A指向B,对象B反过来指向A,此时它们的引用计数器都不为0,但它们俩实际上已经没有意义因为没有任何地方指向它们。如下所示:在最后,...
2018-10-04 11:40:16
218
原创 jvm学习(一)之内存模型区域详解
1,引言 在内存管理区域java与c、c++语言不同的是jvm负责管理内存控制和垃圾回收的功能,而c、c++程序员需要代码里面管理内存,这样虽然方便了java的开发,但出现内存溢出和泄漏等问题也不好排查,让我们先了解下虚拟机内存模型。 2,jvm内存模型图 3,程序计数器 官方解释是程序计数器是当前线程所执行的字节码的行号指示器,在虚拟机的概念模型里(仅是概...
2018-09-16 10:05:43
247
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人