![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Jvm层面
Java蜗牛
这个作者很懒,什么都没留下…
展开
-
HotSpot虚拟机对象探秘
请读者首先注意本篇的题目中的限定语“HotSpot虚拟机”,在虚拟机规范中明确写道:“所有在虚拟机规范之中没有明确描述的实现细节,都不应成为虚拟机设计者发挥创造性的牵绊,设计者可以完全自主决定所有规范中不曾描述的虚拟机内部细节,例如:运行时数据区的内存如何布局、选用哪种垃圾收集的算法等”。因此,本篇(整个内存篇中所有的文章)的内容会涉及到虚拟机“自主决定”的实现,我们的讨论将在HotSpot转载 2014-10-09 13:16:22 · 543 阅读 · 0 评论 -
java对象的内存布局
优化应用程序代码的内存使用并不是一个新主题,但是人们通常并没有很好地理解这个主题。本文将简要介绍 Java 进程的内存使用,随后深入探讨您编写的 Java 代码的内存使用。最后,本文将展示提高代码内存效率的方法,特别强调了 HashMap 和 ArrayList 等 Java 集合的使用。背景信息:Java 进程的内存使用架构提供的内存寻址能力依赖于处理器的位数,举例来说,原创 2015-02-13 14:01:24 · 759 阅读 · 0 评论 -
动态加载jarw文件
假设我们有一个hello.jar文件,里面有一个Util类,我们希望在运行期调将这个jar包放入到我们运行环境并且调用里面的Util.getVersion方法。怎么实现?在java中,我们的类都是通过ClassLoader来加载的,同时ClassLoader具有层级关系,当某个类找不到时,它会去他的父类加载器去寻找,如果依然找不到,就抛出ClassNotFoundException了。原创 2015-02-24 23:54:49 · 684 阅读 · 0 评论 -
jvm字节码详解
小介:去年在读《深入解析JVM》的时候写的,记得当时还想着用自己的代码解析字节码的,最后只完成了一部分。现在都不知道还有没有保留着,貌似Apache有现成的BCEL工程可以做这件事。当时也只是为了学习。这份资料主要参考《深入解析JVM》和《Java虚拟机规范》貌似是1.2版本的,整理出来的。里面包含了一些自己的理解和用实际代码的测试。有兴趣的童鞋可以研究研究。嘿嘿。要有错误也希望能为小弟指点出来,转载 2014-12-25 17:53:16 · 661 阅读 · 0 评论 -
jvm中动态编译器的原理
在C里面我们想执行一段自己编写的机器指令的方法大概如下:typedef void(*FUNC)(int);char* str = "your code";FUNC f = (FUNC)str;(*f)(0); 也就是说,我们完全可以做一个工具,从一个文件中读入指令,然后将这些指令运行起来。原创 2014-12-25 00:15:49 · 600 阅读 · 0 评论 -
jvm中clone的native方法
假设有一个类Apple(Apple的colne只是简单的调用super.clone), 当我clone一个Apple对象时,首先可以通过在Apple的构造函数中加上输出证明Apple的构造器是不会被调用到的。但是如何证明Object的构造器也不会被调用到呢? 有没有什么工具或方法去证明clone是不会调用Object的clone方法的 我跟踪了colne这个native方法, 并下载了原创 2014-12-24 14:29:09 · 859 阅读 · 0 评论 -
jvm目录的组织结构
转自:http://hllvm.group.iteye.com/group/topic/26998├─agent Serviceability Agent的实现├─make 用来build出HotSpot的各种配置文件├─src原创 2014-12-24 10:28:35 · 643 阅读 · 0 评论 -
Java是怎么保证原子性,可见性
先来谈谈yaunzixing原创 2014-10-13 13:13:27 · 1086 阅读 · 0 评论 -
Java虚拟机中的缓存
随着多核CPU的高速发展,为了充分利用硬件的计算资源,操作系统的并发多任务功能正变得越来越重要,但是CPU在进行计算时,还需要从内存读取输出,并 将计算结果存放到内存中,然而由于CPU的运算速度比内存高几个数量级,CPU内的寄存器数量和容量有限,为了不让CPU长时间处于等待内存的空闲状态, 在CPU和内存之间引入了速度接近CPU的高速缓存Cache作为CPU和内存之间的缓冲。计算机硬件并发的原理如转载 2014-10-13 09:39:04 · 1450 阅读 · 0 评论 -
java 里面保留字volatile及其与synchronized的区别
1、锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享变量原创 2014-10-13 09:44:36 · 556 阅读 · 0 评论 -
Java。UnSafe类
java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:1、通过Unsafe类可以分配内存,可以释放内存;类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应。2、可以定位对象某字段的内存位置,也可以修转载 2014-10-09 13:40:05 · 1428 阅读 · 0 评论 -
Java热替换,不出现classcastException
类的热替换是Java在线升级系统设计中的基础技术,从文中给出的实例来看,构建在线升级系统不仅仅是一个技术问题,还牵扯到很多管理方面的因素,比如:如何管理、部署系统中的可在线升级部分和不可在线升级部分以降低系统的管理、维护成本等。对于许多关键性业务或者庞大的Java系统来说,如果必须暂停系统服务才能进行系统升级,既会大大影响到系统的可用性,同时也增加了系统的管理和维护成本。因此,如果能够方便原创 2015-03-09 22:34:30 · 852 阅读 · 0 评论