CN103942100A - 一种基于中间件架构下java栈的多线程实现方法 - Google Patents

一种基于中间件架构下java栈的多线程实现方法 Download PDF

Info

Publication number
CN103942100A
CN103942100A CN201410192755.6A CN201410192755A CN103942100A CN 103942100 A CN103942100 A CN 103942100A CN 201410192755 A CN201410192755 A CN 201410192755A CN 103942100 A CN103942100 A CN 103942100A
Authority
CN
China
Prior art keywords
java
stack
frame
call
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410192755.6A
Other languages
English (en)
Inventor
许海华
刘立平
何明
刘百川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
INNER MONGOLIA ZHONGDA MEDIA DEVELOPMENT Co Ltd
Original Assignee
INNER MONGOLIA ZHONGDA MEDIA DEVELOPMENT Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by INNER MONGOLIA ZHONGDA MEDIA DEVELOPMENT Co Ltd filed Critical INNER MONGOLIA ZHONGDA MEDIA DEVELOPMENT Co Ltd
Priority to CN201410192755.6A priority Critical patent/CN103942100A/zh
Publication of CN103942100A publication Critical patent/CN103942100A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于中间件架构下java栈的多线程实现方法,Java线程在创建时,Java虚拟机给每个Java线程分配一个独有的Java栈,用来存放该Java线程的中间数据,用来模拟实际硬件调用栈结构;每个Java栈又由多个Java帧组成,在每个Java帧中保存了一个Java方法的调用状态。本发明采用独特的虚拟调用栈(java stack)和虚拟的寄存器结构,节省宝贵的数字电视机顶盒硬件资源,并容易把Java栈的多线程移植到只有很少寄存器的硬件平台上,优化了资源。这种java虚拟机设计具有良好的通用性,扩展性强,易于升级。

Description

一种基于中间件架构下java栈的多线程实现方法
技术领域
本发明属于数字电视中间件技术领域,特别涉及一种基于中间件架构下java栈的多线程实现方法。
背景技术
当前,数字电视中间件技术为广电运营商的业务提供一个相对统一的平台,使得跨域的业务互通变得更加简单。中间件技术通过对底层硬件资源的抽象,提供对上层各种应用的支持,其中间件平台负责屏蔽底层硬件差异性,并将底层资源模块抽象为上层API接口供第三方业务模块调用。通过终端平台来进行解析和呈现。在中间件平台里,终端平台在负责完成基本的音视频播放的同时,也负责接收前端广播的应用,并根据用户的操作运行这些应用,使得跨平台、海量信息业务的开展成为可能。
在数字电视中间件软件平台,其中国数字电视中间件标准也规定了必需支持Java应用,要实现支持Java的功能,就必须包含一个Java虚拟机。用来执行运行在数字电视机顶盒上的Java应用程序,通过独特的结构及跨平台设计,将应用程序和中间件标准,底层操作系统、硬件驱动隔离开,使上层的数字电视的服务应用不必考虑过多的平台细节,实现跨平台与硬件无关性。由于数字电视机顶盒的硬件资源比较有限,特别是能使用的内存一般都很小。这就要求Java虚拟机运行的环境设计应该减少了内存开销,使内存布局尽可能紧凑,统一资源管理的模式,同时采用虚拟调用栈,易于移植到只有很少寄存器的硬件平台上,达到节省了宝贵的硬件资源目的。
发明内容
本发明的目的是提供一种基于中间件架构下java栈的多线程实现方法。
本发明的技术方案是,一种基于中间件架构下java栈的多线程实现方法,
Java线程在创建时,Java虚拟机给每个Java线程分配一个独有的Java栈,用来存放该Java线程的中间数据,用来模拟实际硬件调用栈结构;
每个Java栈又由多个Java帧组成,在每个Java帧中保存了一个Java方法的调用状态。
在Java虚拟机处理Java方法调用的过程中,在Java栈中为Java方法调用者和Java方法被调用者分配连续的Java帧;
在Java帧内部按地址从低到高排列依次为局部变量区、帧数据区和操作栈数据区;
当Java调用方法调用被调用的Java方法时,Java虚拟机把Java调用方法的操作数栈中的数据,即被调用方法的参数,拷贝到被调用Java方法Java帧的局部变量区中;
调用方法的Java帧是在被调用方法的Java帧前面被创建的,由于Java帧是连续相邻分配,因此在Java帧的内存布局上看,采用重构技术把Java调用方法的操作栈数据区作为被调用Java方法的局部变量区。
本发明是基于数字电视中间件架构下,Java虚拟机运行的环境是数字电视机顶盒,硬件资源比较有限,特别是能使用的内存一般都很小。在如何有效使用内存资源方面,实现了以下两点创新:
1)采用紧凑对象布局设计减少了内存开销,使内存布局尽可能紧凑
一般情况下一个Java对象的内存布局包含两个部分:
(1)对象头,包含对象的反射信息和对象的Hash编码与锁状态。
(2)对象体,包含了对象字段。
传统的Java虚拟机实现对象头的时候至少使用了两个字存储,但由于对象的平均尺寸是很小的,一个对象头就占4个字节是比较占用空间的。现有的Java虚拟机中引入了一种新的设计,每个对象头只需要一个字就可以包含对象头必要信息,节省内存消耗,同时对象的动态分配也比较快。
2)在传统Java虚拟机的内存管理实现上,Java虚拟机都采用指定的区域存放相应的资源,比如用户对象、反射数据、临时数据和字节码,而这样很容易形成一系列不同的空间,如果这一系列可用空间过小,就形成我们所说的内存碎片,显然要整理这些碎片不是很容易。而现有的Java虚拟机的内存管理采用统一资源管理的模式,在现有的Java虚拟机中分配的数据全被放到对象栈,这些数据包含:
·Java对象
·反射对象
·字节码
·虚拟机内部数据结构。
本发明最大优点是就避免了一般虚拟机有小碎片的问题。在紧凑对象布局设计和内存管理优化后,基于数字电视中间件架构下,还应对Java栈的多线程框架优化设计,采用独特的虚拟调用栈(java stack)和虚拟的寄存器结构,采用虚拟栈中的overlap技术,这样和平台适配层配合,可节省宝贵的机顶盒硬件资源,并容易把Java栈的多线程移植到只有很少寄存器的硬件平台上,优化了资源。这种java虚拟机设计具有良好的通用性,扩展性强,易于升级。采用数字电视中间件与虚拟机分离,是中间件未来的发展趋势。
附图说明
图1是数字电视Java虚拟机框架图
图2是数字电视中间件结构示意图
图3是本发明实施例的虚拟调用栈结构图
图4是本发明实施例的Java帧的内存布局图
具体实施方式
本发明是在一种在数字电视中间件技术架构下,在Java虚拟机设计中,不使用真正硬件平台的寄存器来保存中间数据,而采用Java栈(每个Java线程在创建的时候,Java虚拟机会给它分配一个独有栈,用来存放该线程的中间数据)来虚拟实际硬件调用栈结构。这样基于中间件架构下java栈的多线程框架设计,采用独特的虚拟调用栈(java stack)和虚拟的寄存器结构,采用虚拟栈中的overlap技术,节省了宝贵的硬件资源,易于把Java虚拟机移植到只有很少寄存器的硬件平台上。
在开发Java虚拟机的实现中,不使用真正硬件平台的寄存器来保存中间数据,而采用Java栈(每个Java线程在创建的时候,Java虚拟机会给它分配一个独有栈,用来存放该线程的中间数据)来虚拟实际硬件调用栈结构,每个Java栈又由多个Java帧组成,在每个Java帧中保存了一个Java方法的调用状态。如图3所示。
这样的系统结构会更紧凑,同时由于线程每调用一个方法就会为该方法分配相应的Java栈,因此不用考虑方法内部变量多线程同步问题,由于不使用真实CPU的积存器,节省了宝贵的硬件资源,同时易于把Java栈的多线程移植到只有很少寄存器的硬件平台上。
在Java虚拟机处理Java方法调用的过程中,在Java栈中为Java方法调用者和Java方法被调用着分配连续的Java帧。
在Java帧内部按地址从低到高排列依次为局部变量区、帧数据区和操作栈数据区。
当Java调用方法调用被调用的Java方法时,开发的Java虚拟机会把Java调用方法的操作数栈中的数据(被调用方法的参数)拷贝到被调用Java方法Java帧的局部变量区中。
调用方法的Java帧是在被调用方法的Java帧前面被创建的,由于Java帧是连续相邻分配,因此在Java帧的内存布局上看,采用重构(overlap)技术把Java调用方法的操作栈数据区作为被调用Java方法的局部变量区。例如,
Java帧的内存布局如图4所示。
在图4中可以看到当采用重构(overlap)技术时,由于a方法的操作数栈是b方法的局部变量区,这样当a方法调用b方法时就不用进行a方法的操作数栈数据到b方法的局部变量区的拷贝,从而提升Java方法调用的效率,由于内存共用也减少了Java栈的开销。

Claims (2)

1.一种基于中间件架构下java栈的多线程实现方法,其特征在于,
Java线程在创建时,Java虚拟机给每个Java线程分配一个独有的Java栈,用来存放该Java线程的中间数据,用来模拟实际硬件调用栈结构;
每个Java栈又由多个Java帧组成,在每个Java帧中保存了一个Java方法的调用状态。
2.如权利要求1所述的基于中间件架构下java栈的多线程实现方法,其特征在于,
在Java虚拟机处理Java方法调用的过程中,在Java栈中为Java方法调用者和Java方法被调用者分配连续的Java帧;
在Java帧内部按地址从低到高排列依次为局部变量区、帧数据区和操作栈数据区;
当Java调用方法调用被调用的Java方法时,Java虚拟机把Java调用方法的操作数栈中的数据,即被调用方法的参数,拷贝到被调用Java方法Java帧的局部变量区中;
调用方法的Java帧是在被调用方法的Java帧前面被创建的,由于Java帧是连续相邻分配,因此在Java帧的内存布局上看,采用重构技术把Java调用方法的操作栈数据区作为被调用Java方法的局部变量区。
CN201410192755.6A 2014-05-09 2014-05-09 一种基于中间件架构下java栈的多线程实现方法 Pending CN103942100A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410192755.6A CN103942100A (zh) 2014-05-09 2014-05-09 一种基于中间件架构下java栈的多线程实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410192755.6A CN103942100A (zh) 2014-05-09 2014-05-09 一种基于中间件架构下java栈的多线程实现方法

Publications (1)

Publication Number Publication Date
CN103942100A true CN103942100A (zh) 2014-07-23

Family

ID=51189775

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410192755.6A Pending CN103942100A (zh) 2014-05-09 2014-05-09 一种基于中间件架构下java栈的多线程实现方法

Country Status (1)

Country Link
CN (1) CN103942100A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860690A (zh) * 2021-01-18 2021-05-28 山西省交通科技研发有限公司 一种基于时序数据库的雷达数据读写适配方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030079202A1 (en) * 2001-10-24 2003-04-24 Sun Microsystems, Inc. Exception handling in java computing environments
CN101246440A (zh) * 2007-02-12 2008-08-20 东信和平智能卡股份有限公司 Java卡系统垃圾回收方法
CN101593127A (zh) * 2008-05-27 2009-12-02 商埃曲网络软件(上海)有限公司 一种数字电视中间件系统的跨平台Jave虚拟机
CN102681866A (zh) * 2011-11-22 2012-09-19 飞天诚信科技股份有限公司 一种运行Java程序的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030079202A1 (en) * 2001-10-24 2003-04-24 Sun Microsystems, Inc. Exception handling in java computing environments
CN101246440A (zh) * 2007-02-12 2008-08-20 东信和平智能卡股份有限公司 Java卡系统垃圾回收方法
CN101593127A (zh) * 2008-05-27 2009-12-02 商埃曲网络软件(上海)有限公司 一种数字电视中间件系统的跨平台Jave虚拟机
CN102681866A (zh) * 2011-11-22 2012-09-19 飞天诚信科技股份有限公司 一种运行Java程序的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HESEY: "浅析Java虚拟机结构与机制", 《BLOG.HESEY.NET/2011/04/INTRODUCTION-TO-JAVA-VIRTUAL-MACHINE.HTML》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860690A (zh) * 2021-01-18 2021-05-28 山西省交通科技研发有限公司 一种基于时序数据库的雷达数据读写适配方法
CN112860690B (zh) * 2021-01-18 2023-05-05 山西省智慧交通研究院有限公司 一种基于时序数据库的雷达数据读写适配方法

Similar Documents

Publication Publication Date Title
US11878237B2 (en) Server and data processing method, apparatus, and system
CN107241281B (zh) 一种数据处理方法及其装置
CN106687923B (zh) 多个设备上的计算环境的呈现
CN106161537A (zh) 远程过程调用的处理方法、装置、系统及电子设备
AU2019256257B2 (en) Processor core scheduling method and apparatus, terminal, and storage medium
US10334118B2 (en) Method and system for providing video multimedia ringtone
US9552186B2 (en) Data processing method and electronic device
CN110413261A (zh) 一种直播功能模块的配置方法与设备
CN110955499B (zh) 处理器核心配置方法、装置、终端及存储介质
CN110533755A (zh) 一种场景渲染的方法以及相关装置
KR102425168B1 (ko) 이미지 획득 방법, 기기, 서버 및 저장 매체
CN104778175A (zh) 一种实现异构数据库数据同步的方法及系统
CN113923641B (zh) 一种连接方法及装置
CN109151966A (zh) 终端控制方法、装置、终端设备及存储介质
CN106155749A (zh) 一种监控插件扩展方法及装置
WO2019001078A1 (zh) 一种用于在直播软件中加载插件的方法及装置
CN106453572A (zh) 基于云服务器同步图像的方法及系统
CN103294444A (zh) 计算机共享平台中音频数据的提供方法及装置
US9407447B2 (en) Multicast message replication method and device
CN103942100A (zh) 一种基于中间件架构下java栈的多线程实现方法
US20160110235A1 (en) Electronic device for Internet Protocol Communications
CN106331774A (zh) 设备连接的方法和装置、以及智能电视系统
CN104216707A (zh) 一种支持多种管理模式的统一管理方法
CN107133105B (zh) 超融合系统、基于超融合系统的数据处理方法
CN112749022B (zh) 相机资源访问方法、操作系统、终端和虚拟相机

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140723

RJ01 Rejection of invention patent application after publication