CN103942100A - 一种基于中间件架构下java栈的多线程实现方法 - Google Patents
一种基于中间件架构下java栈的多线程实现方法 Download PDFInfo
- 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
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栈的多线程实现方法。
背景技术
当前,数字电视中间件技术为广电运营商的业务提供一个相对统一的平台,使得跨域的业务互通变得更加简单。中间件技术通过对底层硬件资源的抽象,提供对上层各种应用的支持,其中间件平台负责屏蔽底层硬件差异性,并将底层资源模块抽象为上层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方法的局部变量区。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860690A (zh) * | 2021-01-18 | 2021-05-28 | 山西省交通科技研发有限公司 | 一种基于时序数据库的雷达数据读写适配方法 |
Citations (4)
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程序的方法和装置 |
-
2014
- 2014-05-09 CN CN201410192755.6A patent/CN103942100A/zh active Pending
Patent Citations (4)
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)
Title |
---|
HESEY: "浅析Java虚拟机结构与机制", 《BLOG.HESEY.NET/2011/04/INTRODUCTION-TO-JAVA-VIRTUAL-MACHINE.HTML》 * |
Cited By (2)
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 |