JVM与DVM区别1.由来Android是基于java的既然java已经有了java虚拟机,为什么android还要弄一个DVM了?最重要的就是版权问题,一开始就是用的 JVM,没过多久就被SUN公司告了。由于版权的原因,google自己弄了一个DVM2.dvm好处dvm把所有的.class文件变成... ...
分类:
移动开发 时间:
2020-01-29 10:51:09
阅读次数:
86
RMI介绍 远程方法调用(Remote Method Invocation)是Sun公司规定的允许在不同的JAVA虚拟机之间进行对象间通信的一种规范。在RMI中,JVM可以位于一个或多个计算机上,其中一个JVM可以调用存储在另一个JVM中的对象方法。这就使得应用程序可以远程调用其他对象方法,从而达到... ...
分类:
编程语言 时间:
2020-01-29 10:24:55
阅读次数:
62
1. GC垃圾搜索算法 1.1 内存泄露和内存溢出 + 内存泄漏:是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果 + 内存溢出:通俗的说就是系统内存不够,导致程序崩溃,一般内存泄漏很严重会导致内存溢出。 1.2 引用计数算 ...
分类:
编程语言 时间:
2020-01-27 17:21:59
阅读次数:
95
介绍了java的工作方式以及几个有趣的小程序Java的工作模式大体来说有四个步骤:源代码编译器编译器的输出Java虚拟机源代码这是我们程序员接触到的部分。根据我们面临的问题,编写一个符合Java语法规范的解决方案编译器将我们编写的代码进行编译,假如没有错误,它会生成一个字节码文件。如果有错误,它会提... ...
分类:
编程语言 时间:
2020-01-21 23:39:29
阅读次数:
103
源码地址:https://pan.baidu.com/s/1Jj1H5uL3RLDzZARxFD0Bfw提取码:68x72019.07.04更新 一、想法:暑假闲着也是闲着,不如做一些有趣的事情,所以我决定做一个简易的java虚拟机。其实真的是心血来潮,因为几天前我在找关于java虚拟机学习资料的时 ...
分类:
编程语言 时间:
2020-01-21 19:44:37
阅读次数:
76
堆结构分代图 堆结构分代的意义 Java虚拟机根据对象存活的周期不同,把堆内存划分为几块,一般分为新生代、老年代和永久代(对HotSpot虚拟机而言),这就是JVM的内存分代策略。 堆内存是虚拟机管理的内存中最大的一块,也是垃圾回收最频繁的一块区域,我们程序所有的对象实例都存放在堆内存中。给堆内存分 ...
分类:
其他好文 时间:
2020-01-20 14:48:57
阅读次数:
78
背景 在项目开发中往往不是一个人完成整个项目,而是由一个团队进行开发,而团队中成员的编程能力参差不齐难免会影响项目性能。当一个项目基本定型后难免会遇到项目产品使用的效果不理想例如长时间失去响应、系统卡顿等一系列问题。此时就需要对整体应用进行具体分析。而对于分析人员来说对于整个项目的所有细节并不能全部 ...
分类:
编程语言 时间:
2020-01-19 09:51:31
阅读次数:
88
前言一个Java文件从编码完成到最终执行,一般主要包括两个过程 编译 运行 编译,即把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件。 运行,则是把编译声称的.class文件交给Java虚拟机(JVM)执行。 而我们所说的类加载过程即是指JVM虚拟机把.cl ...
分类:
其他好文 时间:
2020-01-18 10:22:38
阅读次数:
83
为什么JVM要采用双亲委派机制加载类呢? 任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。 也就是说,判断2个类是否“相等”,只有在这2个类是由同一个类加载器加载的前提下才有意义,否则即使这2个类来源于同一个Class ...
分类:
其他好文 时间:
2020-01-16 21:52:43
阅读次数:
652
类加载器(ClassLoader)是啥? 把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放在Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块成为 ”类加载器“ 。 作用 功能测试 每个加载器,有自己的独立的类名称空间。比较两个 ...
分类:
其他好文 时间:
2020-01-16 14:11:17
阅读次数:
68