- 博客(7)
- 收藏
- 关注
转载 理解偏向锁,轻量锁,重锁
java中每个对象都可作为锁,锁有四种级别,按照量级从轻到重分为:无锁、偏向锁、轻量级锁、重量级锁。并且锁只能升级不能降级。 在讲这三个锁之前,我先给大家讲清楚自旋和对象头的概念。自旋现在假设有这么一个场景:有两个线程A,B在竞争一个锁,假设A拿到了,这个时候B被挂起阻塞,一直等待A释放了锁B才得到使用权。在操作系统中阻塞和唤醒是一个耗时操作,如果A在很短的时间内就释放了锁,当这个...
2018-11-07 00:29:28 1931 1
原创 堆外内存溢出
配置JVM参数时,不仅仅要考虑实际内存来设置-Xmx等参数,还要考虑到直接内存!因为,直接内存并不是JVM运行时数据区的一部分,但是会被经常使用。如果忽略了它,很可能会造成明明jvm内存还是足够的,但是却内存溢出了。原因是,各个内存区域的综合大于物理内存的限制啦。...
2018-11-07 00:06:46 635
原创 Java中的NIO类
Java在jdk1.4中新加入了NIO(new input/output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O方式,他可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用来操作。这样能在一些场景中显著提高性能。因为避免了在Java堆和Native堆中来回复制数据。...
2018-11-07 00:01:22 523
原创 java字面量和符号引用
1.字面量字面量就是直接量,举个例子。String str = "str";int i = 1;"str"和1都是字面量,有别于变量。 2.符号引用符号引用就是某个变量,在编译的时候,无法确定其内存地址。String str = "Hello World!"System.err.println(str);第二行代码中的str在编译的时候就会编译为符号引用。...
2018-11-06 23:55:17 3145
原创 Java不可变类
1.不可变类:当类的实例一经创建,其内容便不可改变。 2.Java 中八个基本类型的包装类和 String 类都属于不可变类,而其他的大多数类都属于可变类。 3.不可变类都是线程安全的。...
2018-11-06 23:49:30 190
原创 Java中的String,StringBuffer,StringBuilder比较
1.执行效率:StringBuilder > StingBuffer > StringString是字符串常量,每次更改某个字符串,实际上是创建了一个新的字符串,然后重新指向这个新的字符串。如果操作频繁的话,会产生很多无引用的对象,也就是会触发JVM的垃圾回收(GC),进而导致效率变低。StringBuffer和StringBuilder它们属于变量,是可以改变的对象,...
2018-11-06 23:43:33 182
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人