虚拟机
Amaranth007
奔跑的蜗牛
展开
-
从JVM角度来看对象
在Java中要创建一个对象最简单方法就是new,当然大部分情况下我们还是通过spring来管理对象。但对于JVM来说一个对象的创建、存亡可没那么简单了。对象的创建虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。如果没有,则必须先执行相应的类加载过程。参考:关于类加载机制 在类加载检查通过...原创 2018-06-04 18:46:31 · 256 阅读 · 0 评论 -
java内存区域详解
java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有区域随着虚拟机的进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。如下图: Java堆对于大多数应用来说,Java堆(Java Heap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动...原创 2018-05-28 18:55:27 · 661 阅读 · 0 评论 -
Java内存模型详解
有些人喜欢把Java内存模型和Java内存区域Java内存区域详解弄混淆,这两个是完全不同的概念。什么是java内存模型Java内存模型:Java内存模型(即Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式,详细来说就是在虚拟机中将变量存储到...原创 2018-05-29 19:00:32 · 4646 阅读 · 0 评论 -
volatile关键字详解
对于synchronized关键字相信大家都已经不陌生了,synchronized的性能一直以来被各种吐槽(当然java团队一直没有放弃synchronized,一直在为性能的提升努力着,在JDK1.8中CurrentHashMap放弃了ReentrantLock而使用synchronized,可见synchronized性能应该是提升不少的)。而volatile关键字可以说是Java虚拟机提供的...原创 2018-05-29 22:59:58 · 268 阅读 · 0 评论 -
关于类加载机制
Java在刚刚诞生时提出过一个非常著名的宣传口号:”一次编写,到处运行”,java可以运行在不同的平台上,而Java语言之外的语言,如Clojure、Groovy、JRuby、Jython、Scala等也可以在Java虚拟机上运行。这种实现语言无关性的基础得益于虚拟机和字节码存储格式。 在Java代码被编译成Class文件(.class),在Class文件中描述的各种信息,最终都需要加载到虚...原创 2018-05-30 22:11:03 · 355 阅读 · 0 评论