荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Lg (从零开始), 信区: Java
标  题: Java的动态编译技术(2)
发信站: 深圳大学荔园晨风电子公告牌 (Fri May  1 02:27:09 1998), 站内信件

发信人: seyior (大傻), 信区: Java
标 题: Java的动态编译技术(1)
发信站: 饮水思源站 (Thu Apr 23 22:42:02 1998) , 转信

它 们 上 路 了 !: 与 动 态 编 译 一 起 飞 驰 而 过

---- HotSpot 是 一 种 动 态 编 译 器, 它 将JIT 编 译 器 和 解 释 器 各 自 的 优
 点 结 合
在 一 起, 并 将 二 者 在 单 个 程 序 包 中 得 到 统 一。 这 种 二 者 统 一 的
作 法,
给 代 码 性 能 的 提 高, 带 来 了 许 多 益 处。

---- 尽 管 动 态 编 译 的 所 有 外 在 形 象 都 是 新 的, 但 这 一 概 念 具 有
深 厚 的 理
论 基 础。10 几 年 以 来, 斯 坦 福 大 学(Stanford University) 和 加 利 福 尼 亚
 大 学 芭
芭 拉 分 校(University of California,Santa Barbara) 对 此 都 有 过 长 时 间 的
研 究。 因 此
这 一 技 术 实 际 上 是 十 分 稳 定 的。 然 而 只 有 到 了HotSpot 的 提 出, 才
 使 得 动
态 编 译 成 为 引 人 注 目 的 中 心。 并 且, 除 动 态 编 译 之 外,HotSpot 还
强 调 了
另 外 两 个 主 要 的 时 间 节 省 技 术: 垃 圾 收 集 和 线 程 同 步。

---- 进 行 计 算 的 代 价: 垃 圾 收 集 和 线 程 同 步

---- 不 幸 的 是, 在 大 多 数 应 用 程 序 中, 对Java 代 码 的 优 化 并 不 是
提 高 程
序 运 行 性 能 的 所 有 内 容。 一 些 所 谓 的 特 点, 能 够 帮 助Java 开 发 人
 员 提 高
生 产 率 并 且 使 其 能 够 编 写 出 更 加 通 用、 更 少 错 误 的 应 用 程 序,
但 这 些
特 点 同 样 也 消 耗 了 大 量 的 程 序 运 行 时 间。 主 要 的 程 序 运 行 时 间
 盗 用 者
是 垃 圾 收 集 和 线 程。 从 下 面 所 示 的 饼 图 中 可 以 看 到, 这 二 者 所
占 用 的
时 间 加 起 来 大 约 占 去 了40% 的 应 用 程 序 运 行 时 间。

- Java 内 置 的 垃 圾 收 集 功 能 极 大 地 减 轻 了 程 序 人 员 的 开 发 负 担。
 当 一
个 低 劣 的 程 序 无 修 无 止 地 在 没 有 释 放 内 存 的 情 况 下, 继 续 分 配
 内 存,
直 至 耗 尽 所 有 内 存, 使 系 统 无 法 做 任 何 事 情 时, 计 算 机 系 统 会
被 完 全
冻 结, 出 现 死 机。 垃 圾 收 集 的 所 有 作 用 就 是 排 除 这 种“ 内 存 泄 漏
” 的 出
现。 然 而 垃 圾 收 集 占 用 机 器 时 间。 利 用JIT 来 优 化 应 用 程 序 的 字
节 码
时, 它 对 虚 拟 机 的 垃 圾 收 集 不 会 起 到 任 何 作 用。 应 用 程 序 仍 需
花 费 相
同 的 时 间 来 进 行 垃 圾 收 集。 实 际 上, 有 些 应 用 程 序 进 行 分 配 内
存 及 释
放 内 存 的 频 次 是 如 此 之 高, 以 至 于 用 在 垃 圾 收 集 上 的 时 间 远 远
 大 于 程
序 自 身 运 行 的 时 间。 在 这 种 情 况 下, 对 程 序 代 码 进 行 的 优 化 基
本 上 没
有 什 么 价 值。

---- 另 外 一 个 耗 尽 系 统 资 源 的 罪 魁 祸 首 是 线 程 同 步。Java 的 线 程
 提 供 了
许 多 灵 活 性。 例 如, 线 索 允 许 缓 冲 输 入, 以 改 善 性 能, 并 且 能 使
 开 发 者
编 写 一 个 服 务 器 程 序, 以 对 多 个 客 户 程 序 同 时 提 供 服 务。 但 是
线 索 的
同 步 是 费 时 的, 数 量 大 得 令 人 难 以 置 信 的 时 间── 实 际 上, 在 通
 常 情 况
下, 大 约20% 的 应 用 程 序 的CPU 时 间 都 消 耗 在 此 之 上。 而 且, 这20% 的
 时
间, 是 不 能 通 过 编 译 应 用 程 序 代 码 进 行 优 化 的 时 间。

---- 除 了 动 态 编 译 外,HotSpot 利 用 了 一 种 改 进 了 的 垃 圾 收 集 方 法
, 被 称
为“ 世 代 性” 垃 圾 收 集(generational garbage collection, 或 阶 段 性 垃 圾
 收 集)。 这
一 技 术 在 学 术 著 作 中 多 有 论 述, 但 如 今 在Java 语 言 中 已 广 为 利 用
。 支 持
世 代 性 垃 圾 收 集 这 一 概 念 的 思 想 是, 内 存 趋 向 于 以 一 种 按 年 代
 顺 序 排
列 的 形 式, 来 分 配 内 存 和 释 放 内 存。

---- 将 代 码 区 分 成 为 不 同 的 存 储 分 配“ 世 代” 有 两 个 重 要 的 益 处
。 这 一
技 术 允 许 垃 圾 收 集 器 高 效 地 工 作。 不 是 让 它 在 同 一 个 时 刻 横 穿
 过 所 有
内 存 ── 这 可 能 使 应 用 程 序 在 一 阵 尖 叫 声 中 停 止 运 行 ── 而 是
让 世 代
垃 圾 收 集 器 在 一 个 更 小 规 模 的 分 配 内 存 内 来 回 移 动。 这 样, 使
它 频 繁
地 运 行, 每 次 只 检 查 一 小 部 分 内 存, 就 可 能 使 垃 圾 收 集 工 作 对
程 序 的
运 行 性 能 产 生 更 为 小 得 多 的 影 响。 这 对 于 交 互 式 应 用 程 序, 显
得 特 别
重 要, 在 交 互 式 程 序 的 应 用 中, 用 户 更 加 喜 欢 可 预 言 的 操 作, 而
 不 是
难 以 预 料 的 古 怪 的 行 为。 另 外, 这 种 处 理 使 垃 圾 收 集 过 程 更 为
简 化,
因 而 它 出 现 的 频 次 也 会 更 高。

---- HotSpot 同 样 改 进 了 同 步 处 理。 在 许 多 场 合 下, 原 来 需 要 多 条
 线 程 同
步 工 作 的 代 码 被 精 减 成 一 个 指 令。 因 此, 在 应 用 程 序 中, 应 用 多
 线 程
实 际 上 不 会 消 耗 更 多 的CPU 时 间。

---- 改 进 的 垃 圾 收 集 和 线 程 同 步 能 够 使 应 用 程 序 的 运 行 效 率 得
 到 急 剧
提 高── 即 使 是 在 不 优 化 程 序 代 码 的 情 况 下。 但 是 本 文 的 主 旨 是
 在 于
探 讨 动 态 编 译 的 工 作 机 制。 现 在 让 我 们 回 到 正 题 上 来。


--
☆ 来源:.深大荔园晨风 bbs.szu.edu.cn.[FROM: www-post@linux.szu.e]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店