使用-XX+PrintCompilation参数可以看到JVM做了哪些编译优化(包括逆优化和重新优化),输出的格式如下: <id> <type><method name> [bci] <(# of bytes)> 1、id可以为以下值: 2、type可以为空或者以下的一个或者多个值: 3、metho ...
分类:
其他好文 时间:
2019-09-12 21:07:53
阅读次数:
102
作用: volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。(使用volatile关键字修饰的变量,告诉编译器每次读取数据从内存中读取,而不是从编译器优化后的缓存中读取变量) 编译器优化原理: ...
分类:
编程语言 时间:
2019-07-21 01:20:27
阅读次数:
97
一.安全性问题线程安全的本质是正确性,而正确性的含义是程序按照预期执行理论上线程安全的程序,应该要避免出现可见性问题(CPU缓存)、原子性问题(线程切换)和有序性问题(编译优化)需要分析是否存在线程安全问题的场景:存在共享数据且数据会发生变化,即有多个线程会同时读写同一个数据针对该理论的解决方案:不共享数据,采用线程本地存储(ThreadLocalStorage,TLS);不变模式Ⅰ.数据竞争数据
分类:
编程语言 时间:
2019-07-06 00:00:36
阅读次数:
107
一. 安全性问题 线程安全的本质是正确性,而正确性的含义是程序按照预期执行 理论上线程安全的程序,应该要避免出现可见性问题(CPU缓存)、原子性问题(线程切换)和有序性问题(编译优化) 需要分析是否存在线程安全问题的场景:存在共享数据且数据会发生变化,即有多个线程会同时读写同一个数据 针对该理论的解 ...
分类:
编程语言 时间:
2019-07-05 22:47:19
阅读次数:
239
一、什么是JVM JVM是跨平台,JVM类似于适配器。 适配Windows和Linux平台。从软件层面屏蔽硬件底层。 C和C++也是跨平台。 鸿蒙——编译优化,60% 二、JVM体系构成: .class文件,看不懂。 漱壕作为开头,Java魔数。 cafe babe——LOGO Java魔数,在文件 ...
分类:
其他好文 时间:
2019-06-24 20:51:28
阅读次数:
121
1、 编译器 写代码只是生产软件过程中的一环。无论是数据结构、编译原理、操作系统还是组成原理都是编码的重要基础,试问没有学过编译原理的人能够针对性地进行编译优化吗?不懂操作系统的人能玩得转linux吗?当然 nonono咯 对于编译器来说这就好像一个木匠,只会使用斧子、锯子这些工具,是做不出好的家具 ...
分类:
其他好文 时间:
2019-06-08 00:30:52
阅读次数:
116
Java内存模型规范了JVM如何提供按需禁用缓存和编译优化的方法。具体来说,这些方法包括volatile、synchronized和final三个关键字,以及六项Happens-Before规则。Happens-Before的7个规则:(1).程序次序规则:在一个线程内,按照程序代码顺序,书写在前面的操作先行发生于书写在后面的操作。准确地说,应该是控制流顺序而不是程序代码顺序,因为要考虑分支、循环
分类:
编程语言 时间:
2019-04-30 10:55:45
阅读次数:
150
13.1总结前面12节的课程,主要针对Linux内核中GNUC扩展的一些常用C语言语法进行了分析。GNUC的这些扩展语法,主要用来完善C语言标准和编译优化。而通过C标准的发展过程我们又发现,对于一些编译器扩展的一些特性,或者其它编程语言(如:C++)中的好的特性和语法,C标准也会适时地吸收进来,作为新的C语言标准。在GNUC的这些扩展语法中,attribute和宏定义是两大特色。在嵌入式底层系统中
分类:
编程语言 时间:
2019-02-03 09:18:12
阅读次数:
201
11.1什么是内建函数内建函数,顾名思义,就是编译器内部实现的函数。这些函数跟关键字一样,可以直接使用,无须像标准库函数那样,要#include对应的头文件才能使用。内建函数的函数命名,通常以__builtin开头。这些函数主要在编译器内部使用,主要是为编译器服务的。内建函数的主要用途如下。用来处理变长参数列表;用来处理程序运行异常;程序的编译优化、性能优化;查看函数运行中的底层信息、堆栈信息等;
分类:
编程语言 时间:
2019-02-03 09:15:02
阅读次数:
268
“-fstrict-aliasing”表示启用严格别名规则,“-fno-strict-aliasing”表示禁用严格别名规则,当gcc的编译优化参数为“-O2”、“-O3”和“-Os”时,默认会打开“-fstrict-aliasing”。 什么是严格别名规则?gcc对严格别名的定义: In part ...
分类:
其他好文 时间:
2019-01-21 17:06:01
阅读次数:
198