JVM
·不过如此
这个作者很懒,什么都没留下…
展开
-
JVM学习之编译与类加载
Java文件通过Javac编译器编译成class文件,编译后的class文件交由JVM平台加载运行,即Java需要经过编译期和运行期编译期优化指的是Javac编译器将Java文件转化为字节码即class文件的优化过程;运行期优化指的是JIT编译器将热点代码编译成与平台相关的机器码,并进行多层次的优化,可以理解为对多个指令操作后得到同一结果合并为单个指令操作或者无用指令去除等;编译过程(Jav...原创 2019-08-07 23:41:49 · 250 阅读 · 0 评论 -
JVM学习之内存模型与GC算法
Java程序无需对内存进行分配和释放,内存的分配与释放由JVM来完成JVM内存模型线程独占:栈区,本地方法栈,程序计数器线程共享:堆,方法区java声明的变量内存存放位置:1.new出来的对象及数组存放在堆区,对字符串JVM进行了特殊处理,1.7以后首次在堆中创建,会将字符串的引用存放在方法区的字符串常量池中2.函数中变量的声明存放于栈中,如果是对象引用,栈中保存的是指向堆区的引用地址...原创 2019-08-08 19:20:23 · 214 阅读 · 0 评论 -
JVM学习之JVM参数
查看Windows下的JVM参数:Windows下默认classpath上的JVM参数获取CMD上输入:java -XX:+PrintCommandLineFlags -version//JDK1.8//初始堆-XX:InitialHeapSize=265937728 //最大堆-XX:MaxHeapSize=4255003648 -XX:+PrintCommandLineFla...原创 2019-08-09 17:31:32 · 334 阅读 · 0 评论 -
非volatile变量读写在多线程环境中解释运行和编译运行的不同结果
基本知识Java程序默认采用混合执行模式,即既有解释运行,也有JIT编译运行。Java程序运行期间,先解释运行,在一定条件下触发JIT编译运行。JIT编译器编译判决条件基于方法调用计数器和方法中的循环回边计数器。循环的回边计数器超过阈值,循环可以被编译,这种编译称作OSR编译(栈上替换)。计数器会周期性减少,这意味着计数器只是方法或循坏最新热度的度量。测试目的查看非volati...原创 2019-08-25 23:29:14 · 224 阅读 · 0 评论