![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
虚拟机
文章平均质量分 76
weeweee
1、5年java程序开发经验,熟悉JavaEE及其相关技术;3年研发团队管理及软件设计经验<br/>2、享受编程的乐趣,喜欢简洁的代码,热爱阅读<br/>3、善于学习新的知识,对新技术上手较快;有较强的环境适应能力,具有良好的团队协作精神,能吃苦耐劳,性格活泼开朗,善于与人相处
展开
-
运行时数据区域
java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途及创建和销毁时间,有的随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。这里有个图其中方法区和堆,是所有线程共享的。虚拟机栈、本地方法栈和程序计数器由线程独享的。程序计数器程序计数器是一块较小的内存空间,它的作用可以看作是当前线原创 2013-04-22 23:04:53 · 530 阅读 · 0 评论 -
垃圾回收
垃圾收集(Garbage Collection,GC)主要关注堆和方法区,回收满足回收条件的空间。对象回收对于堆上的对象实例,垃圾收集器在进行回收操作前,首先要判别实例对象是否被引用,准确的是判别对象是否“死亡”,因为有引用不代表不需要回收。判别对象时候被引用有2个算法:引用计数法给对象添加一个引用计数器,每当有一个地方引用它时,计数值就加1;当引用失效时就减1。任何时候如果计原创 2013-04-24 21:26:16 · 526 阅读 · 0 评论 -
java内存模型简述
JAVA内存模型我们知道计算机在实现多线程操作时,不仅仅需要CPU处理器并发操作,更重要的是并发时,CPU寄存器、高速Cache同主内存间的数据交互。只有保证了这些才能保证安全的线程操作。C语言需要直接操作硬件来完成这些,所以它一旦更换机子就不行了。那么JAVA是如何保证的呢?JAVA虚拟机通过内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让JAVA程序在各种平台下都能达原创 2013-04-27 22:17:09 · 778 阅读 · 0 评论 -
线程安全和锁优化
线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。JAVA线程安全不可变通过java的final关键字来事项。对于基本数据类型,直接用final修饰即可保证不可变性;但是对于对象,需要保证对象的行为不会对其状态产生任何影响原创 2013-04-28 22:32:20 · 1425 阅读 · 0 评论 -
类初始化时机
对于类加载过程中初始化阶段,虚拟机严格规定了有且只有四种情况必须立即对类进行“初始化”:遇到new、getstatic、putstatic和invokestatic这4条指令码时,如果类没有初始化,则需要先进行初始化。这4条指令对应的java场景是:使用new关键字实例化对象读取或设置一个静态字段,不包括被final修饰的、已在编译器把结果放入常量池的静态字段调用一个静态方法使原创 2013-05-01 21:44:35 · 777 阅读 · 1 评论 -
应该使用32位还是64位JVM
应用使用32位的JVM,还是应该使用64位的JVM,我自己以前还真没想过,大家都想过了吗?本文是Plumbr中的一篇博文,为大家提了个醒。(2012.11.27最后更新) 在我的企业级软件开发职业生涯中,我多次面对这个问题。每隔一段时间我不得不建议配置一个新的特定环境。而往往该问题部分与"我应该使用32位还是64位JVM?"这一问题有关。老实说,一开始我是靠掷硬币来解决的,而不是给出转载 2013-05-28 23:11:32 · 980 阅读 · 0 评论