文档章节

编程语言虚拟机(五)

chunquedong
 chunquedong
发布于 2017/08/10 17:12
字数 350
阅读 15
收藏 0
JVM

值类型

  1. 在Java和C#中值类型在分配给Obj或者Int?的时候需要boxing。影响性能和增加垃圾收集压力。
  2. Go语言中有指针,不需要boxing。这样会导致对象const变得复杂,指针不能引用栈上的值类型变量。
  3. Swift语言提供3个字大小的内存空间,可以用来存储小的值类型或者指针类型。但是这样存在内存浪费问题。

垃圾收集

  1. 垃圾收集需要获取栈上对象作为根。 这迫使指针类型不能优化到寄存器,可以在检查点的地方调用函数,迫使寄存器被保存到栈。
  2. 引用计数需要原子操作,总体性能可能不如跟踪式GC。

本地代码交互

本地代码怎么处理垃圾收集呢?

  1. 暂停收集。内部会再次调用托管代码,所以必须标示根。如果长时间阻塞,需要增加阻塞期间标记。
  2. 允许收集。需要标示根,且增加托管代码保护,防止期间执行GC。

异常处理

  • setjmp/longjmp在跳回的时候寄存器变量会被重置,和异常的行为不同。
  • setjmp影响不出错情况的性能。即使这样,性能也可能比每次调用完检查错误码快。

© 著作权归作者所有

上一篇: 可恶的Python
下一篇: 同步阻塞IO
chunquedong

chunquedong

粉丝 47
博文 133
码字总数 38947
作品 5
海淀
高级程序员
私信 提问
KVM虚拟化管理平台VManagePlatform

VManagePlatform是什么? 一个KVM虚拟化管理平台 开发语言与框架: 编程语言:Python2.7 + HTML + JScripts 前端Web框架:Bootstrap 后端Web框架:Django 后端Task框架:Celery + Redis VMan...

welliamcao
2017/02/20
0
0
[转] 五大基于JVM的脚本语言

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 能运行在Java的虚拟机J...

小编辑
2011/07/06
2.6K
4
Java虚拟机详解01----初识JVM

主要内容如下: JVM的概念 JVM发展历史 JVM种类 Java语言规范 JVM规范 一、JVM的概念: JVM:   Java Virtual Machine,意为Java虚拟机。 虚拟机:   指通过软件模拟的具有完整硬件系统功...

商者
2016/04/10
32
0
PHP 运行时环境 - polarphp

为什么要做 polarphp 项目 随着和的强势崛起,的市场份额逐渐被蚕食,而官方仍然坚守在编程领域,有些东西越是想守住就越守不住。借鉴和的相关特性对重新封装,去掉一些古老弃用的特性和强属...

polarphp
01/28
6.9K
10
凭啥Java的运行环境称虚拟机,Python的只能称解释器

看到Stackoverflow上有个问题在讨论Java和Python的对比,其中就有人问答为啥Java的运行环境被称之为JVM,而Python的只能叫做Interpreter。 这个问题估计想过的人不多,先找维基百科看一下虚拟...

AlexMahoneFBI
2015/03/07
396
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
昨天
6
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部