zoukankan      html  css  js  c++  java
  • 培训学习心得3.10

     

    1.BigDecimal是不可变的,它每次的运算结果都会生成一个新的DigDecimal。

    2.mySql中ID字段为无符号数。在用java数据库程序时,一般选择long存储该字段,因为java中的整数都是有符号的,因此用int存储会溢出。

    3.java中的即时编译:

    JAVA程序最初是通过解释器(Interpreter)进行解释执行的,当JVM发现某个方法或代码块运行特别频繁的时候,就会认为这是“热点代码”(Hot Spot Code)。

    为了提高热点代码的执行效率,就会将这些“热点代码”编译成与本地机器相关的机器码,进行各个层次的优化。 完成这个任务的编译器就是即时编译器(JIT)。

    JVM中默认内置了两款即时编译器,称为Client Compiler和Server Compiler。可以用指定参数的方式,指定采用Client模式和Server模式。默认是mixed模式。

    Server Compiler相比与Client Compiler的优化会更加复杂,它占用的内存等资源也比Client Compiler多,因此它能够保证程序的执行速度更快,而Client Compiler则使得程序的启动速度更快。

    热点代码分为:多次被调用的方法和多次被执行的循环体

    多次被执行的循环体编译器比较好识别,对于多次被调用的方法的判定,一般有两种方法。

     (1)基于采样的方式探测(Sample Based Hot Spot Detection) 。周期性检测各个线程的栈顶,发现某个方法经常出险在栈顶,就认为是热点方法。好处就是简单,缺点就是无法精确确认一个方法的热度。容易受线程阻塞或别的原因干扰热点探测。

    (2)基于计数器的热点探测(Counter Based Hot Spot Detection)。某个方法超过阀值就认为是热点方法,触发JIT编译。

    解析器与编译器混合的优点:
    (1)当程序需要迅速启动和执行的时候,解析器首先发挥作用,省去编译的时间,立即执行。随着时间的推移,编译器发挥作用,把越来越多的代码编译成本地代码,获得更高的执行效率。
    (2)当机器内存限制比较大,可以用解析方式节约内存,反之可以用编译提升效率。
    (3)解析器还可以作为编译器的“逃生门”。当例如加载了新类后类型结构发生变化,可以采用逆优化,退回到解析状态继续执行(不太理解)

    4.java中native关键字

    java native方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言直接操纵计算机硬件时要声明为native方法。

    java中,通过JNI(Java Native Interface,java本地接口)来实现本地化。 如果使用了native方法也就丢失了java的方便性和安全性。

  • 相关阅读:
    050819no JLINK device found
    050819流水账
    C语言附录的一些小摘要
    020819存疑点&error&warning
    020819流水账
    010819流水账
    310719存疑点&error&warning
    310719流水账
    300719流水账
    linux内核获取当前进程路径分析
  • 原文地址:https://www.cnblogs.com/userrain/p/5263320.html
Copyright © 2011-2022 走看看