零碎笔记(七)

来源:互联网 发布:淘宝网皮衣女装 编辑:程序博客网 时间:2024/05/17 03:50
web.xml中classpath和classpath*的区别:
       classpath:只会到指定的class路径中查找文件;
       classpath*:不仅在指定的class路径中查找文件,还包括在jar文件中(class路径)进行查找.

       java.util.LinkedList是双向链表,理论上说,双向链表的删除的时间复杂度是O(1),但实际上LinkedList.remove(Object)方法的时间复杂度是O(n)+O(1),结果仍然是O(n)的时间复杂度,因为需要O(n)的复杂度去定位删除节点。

       使用与运算代替求余运算:当需要对2的次幂进行求余时,可以是使用&运算符来代替,提升效率。当x=2^n(n为自然数)时,a % x = a & (x - 1 )。

正常情况下数据从文件发送到socket的过程:
       1. 操作系统从磁盘读取数据到系统内核空间的缓存页中;
       2. 应用从内核空间读取数据到用户空间缓冲区中;
       3. 应用从把数据写回到内核空间的socket缓冲区中;
       4. 系统拷贝socket缓冲区的数据到网卡缓冲区, 然后由网卡发送数据到网络中。
有4次拷贝还有2次系统调用, 如果使用sendfile命令, 重新拷贝运行系统直接把数据从缓存页拷贝到网络, 优化后, 最终只需要一次从缓存页到网卡缓冲区拷贝。

       Java8的实现lambda表达式时,使用Java7加入的一个新指令invokeDynamic去动态地连接lambda函数的真正调用点,从而代替创建一个用于包装lambda函数的对象。

不可变对象的好处:
       不可变对象对GC的优化,主要体现在Old Generation中。
       如果存在Old Generation的对象引用了Young Generation的对象,那么在每次YoungGC的过程中,就必须考虑到这种情况。Hotspot JVM为了提高YoungGC的性能,避免每次YoungGC都扫描Old Generation中的对象引用,采用了 卡表(Card Table) 的方式。简单来说,当Old Generation中的对象发生对Young Generation中的对象产生新的引用关系或释放引用时,都会在卡表中响应的标记上标记为脏(dirty),而YoungGC时,只需要扫描这些dirty的项就可以了。
       可变对象对其它对象的引用关系可能会频繁变化,并且有可能在运行过程中持有越来越多的引用,特别是容器。这些都会导致对应的卡表项被频繁标记为dirty。而不可变对象的引用关系非常稳定,在扫描卡表时就不会扫到它们对应的项了。
       这里的不可变对象,不是指仅仅自身引用不可变的final对象,而是真正的Immutable Objects。

       在程序运行时类是在方法区,实例对象本身在堆里面。
       方法字节码在方法区。线程调用方法执行时创建栈帧并压栈,方法的参数和局部变量在栈帧的局部变量表。
对象的实例变量和对象一起在堆里,所以各个线程都可以共享访问对象的实例变量。
       静态变量在方法区,所有对象共享。字符串常量等常量在运行时常量池。
       各线程调用的方法所有参数传递、方法返回值的返回,都是使用栈帧里的操作数栈来完成的。

       -verbose:gc与-XX:+PrintGCDetails:
       经常能看到在推荐的标准参数里这两个参数一起出现。实际上它们有啥关系? 
       在Oracle/Sun JDK 6里,"java"这个启动程序遇到"-verbosegc"会将其转换为"-verbose:gc",将启动参数传给HotSpot VM后,HotSpot VM遇到"-verbose:gc"则会当作"-XX:+PrintGC"来处理。 也就是说 -verbosegc、-verbose:gc、-XX:+PrintGC 三者的作用是完全一样的。 
       而当HotSpot VM遇到-XX:+PrintGCDetails参数时,会顺带把-XX:+PrintGC给设置上。也就是说-XX:+PrintGCDetails包含-XX:+PrintGC,进而也就包含 -verbose:gc。

       在使用G1 GC策略时,Humongous对象的分配会极大伤害G1的性能,使用命令行选项 -XX:+TraceG1HObjAllocation,在标准输出打印大对象的分配堆栈。用户可以根据这些Trace信息,在应用层面减少大对象的分配,提升G1使用的性能。

0 0
原创粉丝点击