java语言对比,jvm,垃圾回收
1.java/c++/ruby/python集中语言的对比
java和c++
1,没有指针
2,没有多继承
3,没有const
4,在实现多态上的区别 tc++里面的虚函数,纯续函数和java里面的多态
5,java以类为基本单位,c++以方法为基本单位

java和ruby

java和python

2,java运行机制与jvm
jvm是实现java跨平台特性的关键。 java既是解释性语言,也是编译型语言。或者说java既不是纯粹的解释性语
言,也不是纯粹的编译型语言。 编译性语言:将语言源代码一次性的编译成特定平台硬件能够执行的机器码。编译生成的可执行程序可以脱离开发环境,在特定的平台执行。
优点:执行效率高
缺点:不能跨平台 解释性语言:对源程序逐行解释成特定平台的机器码并立即执行的语言。
优点:跨平台比较容易,只需要提供特定平台的解释器。
缺点:效率低。 java:经历先编译,后解释这两个步骤。
编译步骤:利用javac编译成与平台无关的字节码文件*.class文件。
解释执行步骤:利用java进行解释执行。
其中,负责解释执行*.class文件的就是java虚拟机,也就是jvm。不同平台的jvm是不同的,是实现跨平台的关键,其向上提供给java*.class字节码的接口完全相同,但向下适应不同平台的接口则互不相同。只要提供特定平台的jvm,编译后的*.class字节码文件就可以在这个平台执行,因此可以视其为一个转换器。
jvm是一个抽象的计算机,包含计算机所有的指令集、寄存器、栈、垃圾回收堆等等。
java虚拟机
3,java的垃圾回收
内存泄漏:
分配出去的内存得不到及时回收。
垃圾回收步骤:
1)发现无用的对象
2)回收被无用对象占用的内存空间。java的垃圾回收只能回收堆内存空间,对物理资源,如I/O,数据库连接无能为力
系统在垃圾回收机制回收任何对象之前,总会调用其finzlize方法
1)注:对象在内存中的状态分为可达状态,可恢复状态,不可达状态。可达状态,是指对象有变量引用;可恢复状态,是指对象有变量引用,但是尚未对其调用finalize方法;不可达状态,是指已经对其调用了finalize方法
2)注:垃圾回收不可预知。强制系统进行垃圾回收可以调用system.gc()或者Runtime.getRuntime().gc(),但依旧不能精确控制垃圾回收机制的进行。
当然,可以采用
StrongReference(强引用):只要被引用,就不可能被回收
SoftReference(软引用):被引用,如果系统内存足够,不会被回收,如果内存空间不足的时候,就会被回收。
WeakReference(弱引用):被引用,不管内存是否足够,都可能被回收
PhantomReference(虚引用):几乎相当于没有引用
java语言对比,jvm,垃圾回收的更多相关文章
- Java内存管理 -JVM 垃圾回收
版权声明:本文为博主原创文章,未经博主允许不得转载 一.概述 相比起C和C++的自己回收内存,JAVA要方便得多,因为JVM会为我们自动分配内存以及回收内存. 在之前的JVM 之内存管理 中,我们介绍 ...
- Java基础:JVM垃圾回收算法
众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型 ...
- 深入理解Java虚拟机之JVM垃圾回收随笔
1.对象已经死亡? 1.1引用计数法:给对象中添加一个引用计数器,每当有一个地方引用他时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器都为0的对象就是不可能再被使用 的.但是它很难解决 ...
- 深入理解java虚拟机之——JVM垃圾回收策略总结
如何判断一个对象是否存活 引用计数算法:给对象中添加一个引用计数器,每当有引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器为0的对象就是不可能再被使用. Java虚拟机里面没有 ...
- 【转】Java虚拟机的JVM垃圾回收机制
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp43 1.JVM内存空间 JVM堆(Heap)= 新生代 ...
- Java虚拟机学习笔记——JVM垃圾回收机制
Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...
- 老李分享:jvm垃圾回收
老李分享:jvm垃圾回收 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478 ...
- Java虚拟机垃圾回收:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法
在<Java对象在Java虚拟机中的创建过程>了解到对象创建的内存分配,在<Java内存区域 JVM运行时数据区>中了解到各数据区有些什么特点.以及相关参数的调整,在<J ...
- Java:JVM垃圾回收(GC)机制
JVM垃圾回收算法 1.标记清除(Mark-Sweep) 原理: 从根集合节点进行扫描,标记出所有的存活对象,最后扫描整个内存空间并清除没有标记的对象(即死亡对象)适用场合: 存活对象较多的情况下比较 ...
- JVM基础系列第8讲:JVM 垃圾回收机制
在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由<Java 虚拟机规范>指定的,每个 Java 虚拟机可能都有不同的实现.其实涉及到 Java 虚拟机的内存, ...
随机推荐
- 洛谷 P1072 Hankson 的趣味题 题解
题面 提前知识:gcd(a/d,b/d)*d=gcd(a,b); lcm(a,b)=a*b/gcd(a,b); 那么可以比较轻松的算出:gcd(x/a1,a0/a1)==gcd(b1/b0,b1/x) ...
- 关于setter 和 getter方法的一些总结(初级)
1.最基础的set 和 get 准备工作 Person.h @interface Person : NSObject { NSString *_hobby; // ObjC建议成员变量带"_ ...
- Tarjan水题系列(5):最大半连通子图 [ZJOI2007 luogu P2272]
题目 大意: 缩点后转为求最长链的长度和最长链的个数 思路: 看懂题就会做系列 长度和个数都可以拓扑排序后DP求得 毕竟是2007年的题 代码: 如下 #include <cstdio> ...
- python3的base64编解码
使用python3的base64编解码实现字符串的简易加密解密 引言: 在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码,对拿到的响应 ...
- 3D max导出的设置选项
一3D max导出的设置选项
- java静态代码块、静态方法、静态变量、构造代码块、普通代码块
一.静态代码块 1.在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块: public class CodeBlock{ static{ System.out.prin ...
- lnmp1.4 nginx配置thinkphp5
vhost/xxx.conf配置图,重点是红色框框 研究了两三天 ,至此thinkphp5 路由,隐藏index.php全部解决 感谢网友的分享:http://blog.csdn.net/gaoxiu ...
- vue点击出现蒙版
需求: 1.点击一个事件时弹出一个蒙版: 2.蒙版上有取消,删除事件:(点击取消时候蒙版消失,点击删除时,删除蒙版并消失): 3.点击空白地方,蒙版也消失: <template> ...
- FMCJ450-基于ADRV9009的射频收发模块
FMCJ450-基于ADRV9009的射频收发模块 一.板卡概述 接收路径包括两个具有动态范围的独立式宽带宽直接转换接收器.该器件还支持宽带宽分时观察路径接收器,供在 TDD 应用中使用.完整的接收子 ...
- 四、Signalr手持令牌验证
一.JWT 服务端在respose中设置好cookie,浏览器发请求都会自动带上,不需要做额外设置 但是如果客户端是非浏览器,或者要兼容多种客户端,这个方法就不行了 Js端 @{ Layout = n ...