天天看点

java8新特性----未完待续

自从JDK1.8版本起,JVM的内存区域发生了一些改变,实际上是持久代内存被彻底删除,取而代之的是元空间 可以使用不同版本的jstat来对比JVM的GC内存分布。

java8新特性----未完待续
java8新特性----未完待续

通过对比发现JDK1.7版本中存在持久代内存区域,而在1.8中,该内存区域被MetaSpace取而代之,元空间同样是堆内存的一部分,JVM为每个类加载器分配一块内存块列表,进行线性分配,块的大小取决于类加载器的类型,sun/反射/代理对应的类加载器块会小一些,之前的版本会单独卸载回收某个类,而现在则是GC过程找那个发现某个类加载器已经具备回收的条件,则会将整个类加载器相关的元空间全部回收,这样就可以减少内存碎片,节省GC扫描和压缩的时间。

1.interface 可以提供静态方法及default 方法 其中default方法可以是private的,以方便其他default方法进行调用

例如:List 中的 default 方法 stream

default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }
           

例如:Comparator接口中有相当多的静态方法如:

public static <T, U> Comparator<T> comparing(
            Function<? super T, ? extends U> keyExtractor,
            Comparator<? super U> keyComparator)
    {
        Objects.requireNonNull(keyExtractor);
        Objects.requireNonNull(keyComparator);
        return (Comparator<T> & Serializable)
            (c1, c2) -> keyComparator.compare(keyExtractor.apply(c1),
                                              keyExtractor.apply(c2));
    }
           

java1.5

引入了TimeUnit,对sleep方法提供了很好的封装,使用它可以省去时间单位的换算步骤,如先要休眠3小时24份15秒99毫秒,强烈建议使用Thread.sleep的地方完全使用TimeUnit来代替
TimeUnit.HOURS.sleep(3);
            TimeUnit.MINUTES.sleep(24);
            TimeUnit.SECONDS.sleep(15);
            TimeUnit.MILLISECONDS.sleep(99);
           

java1.7

引入了"带资源的try" 构造(try with resources) 不需要finally子句,java会对try块参数表中声明的所有AutoCloseable对象自动调用close()。
java8新特性----未完待续