CN110515703A - Jvm缓存系统和方法 - Google Patents
Jvm缓存系统和方法 Download PDFInfo
- Publication number
- CN110515703A CN110515703A CN201910808688.9A CN201910808688A CN110515703A CN 110515703 A CN110515703 A CN 110515703A CN 201910808688 A CN201910808688 A CN 201910808688A CN 110515703 A CN110515703 A CN 110515703A
- Authority
- CN
- China
- Prior art keywords
- caching
- jvm
- pile
- target data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000004044 response Effects 0.000 abstract description 7
- 230000007246 mechanism Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 102100039339 Atrial natriuretic peptide receptor 1 Human genes 0.000 description 1
- 101710102163 Atrial natriuretic peptide receptor 1 Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种JVM缓存系统和方法,其中JVM缓存系统包括Java虚拟机和堆外缓存容器;Java虚拟机通过本地的方式申请和释放堆外缓存容器。本发明采用off heap方案减小缓存对GC的影响,使得业务服务时间延长,整体提升系统响应速度。
Description
技术领域
本发明属于JVM(Java Virtual Machine,Java虚拟机)缓存技术领域,尤其设于一种JVM缓存系统和方法。
背景技术
对响应速度要求较高的系统,往往采用如图1所示的Java虚拟机,该Java虚拟机采用堆内缓存101来解决从数据库中获取数据速度慢的问题,通过预加载流程可以优先加载数据到JVM的堆内缓存101中,使用数据时直接从堆内存中获取数据,通过这这个方案可以提升数据访问速度。但是,随着数据量增大,大量的数据缓存和频繁的缓存更替在堆内缓存中积压,JVM GC(Garbage Collection,垃圾回收)的频次和GC的时间(STW,Stop-The-World,Java中一种全局暂停现象)开始上升,这就导致系统能够为正常业务提供的服务时间减少,从而导致系统整体响应速度减慢。
发明内容
本发明要解决的技术问题是为了克服现有技术中JVM缓存机制导致系统响应速度减慢的缺陷,提供一种JVM缓存系统和方法。
本发明是通过下述技术方案来解决上述技术问题:
本发明提供一种JVM缓存系统,包括Java虚拟机和堆外缓存容器;
Java虚拟机通过本地的方式申请和释放堆外缓存容器。
较佳地,Java虚拟机采用LRU算法(Least Recently Used,最近最少使用淘汰算法)管理堆外缓存容器。
较佳地,Java虚拟机采用LFU算法(Least Frequently Used,最不经常使用淘汰算法)管理堆外缓存容器。
较佳地,所述缓存管理区用于在所述缓冲区中查询是否存在目标数据,如果存在所述目标数据,则所述缓存管理区用于获取所述目标数据,如果不存在所述目标数据,则所述缓存管理区用于从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
较佳地,所述缓存管理区用于在所述缓冲区中查询是否存在目标数据,如果存在所述目标数据,则所述缓存管理区用于获取所述目标数据,如果不存在所述目标数据,则所述缓存管理区用于从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
本发明还提供一种JVM缓存方法,包括以下步骤:
Java虚拟机通过本地的方式申请和释放堆外缓存容器。
较佳地,JVM缓存方法还包括:
Java虚拟机采用LRU算法管理堆外缓存容器。
较佳地,JVM缓存方法还包括:
Java虚拟机采用LFU算法管理堆外缓存容器。
较佳地,所述Java虚拟机包括缓存管理区,所述缓存管理区包括缓冲区;所述JVM缓存方法还包括以下步骤:
所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
较佳地,所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区的步骤包括:
所述缓存管理区在所述缓冲区中查询是否存在目标数据,如果存在所述目标数据,则所述缓存管理区获取所述目标数据,如果不存在所述目标数据,则所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
本发明的积极进步效果在于:本发明采用off heap(堆外缓存)方案减小缓存对GC的影响,使得业务服务时间延长,整体提升系统响应速度。
附图说明
图1为现有技术的Java虚拟机的结构示意图。
图2为本发明的一较佳实施例JVM缓存系统的结构示意图。
图3为本发明的一较佳实施例JVM缓存方法的流程图。
具体实施方式
下面通过一较佳实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
本实施例提供一种JVM缓存系统,参照图2,该JVM缓存系统包括Java虚拟机201和堆外缓存容器202。Java虚拟机通过本地(Native)的方式申请和释放堆外缓存容器。与现有技术相比,本实施例的JVM缓存系统通过JNA(Java Native Access,一种开源的Java框架)把数据缓存腾挪到Java虚拟机的管辖范围之外以形成堆外缓存容器202,通过Native的方式申请和释放缓存,减少数据缓存对JVM GC的影响。并且,本实施例的JVM缓存系统屏蔽掉了复杂的off heap缓存添加和获取的机制,简化了使用流程。
具体实施时,使用者从数据源中获取需要缓存的数据,Java虚拟机的缓存管理区203通过JNA向堆外开辟空间以形成堆外缓存容器,存放这些数据。这个过程需要从Object(对象)转换成Byte(二进制流)。这个转换是需要成本的,所以在缓存管理区203设置了一个缓冲区204存放Object形态的数据(Java虚拟机里的业务数据结构都是Object形态的)。当Java虚拟机的业务应用线程需要数据的时候优先在缓冲区204查询是否存在所需的目标数据;如果有,则直接获取Object形态的数据;如果没有,则从堆外缓存容器202获取Byte形态的数据再转换成Object形态的数据,同时存放在缓冲区204。
进一步地,本实施例的JVM缓存系统中,Java虚拟机采用LRU算法管理堆外缓存容器。LRU算法,即最近最少使用淘汰算法,该算法会使用双向链表来记录每一块内存的使用情况,最近访问的数据永远排在链头,当划定的总内存到达临界点,如果有新的缓存进来时会先把最近最少使用的缓存清理掉,即链表尾部的内存。这个算法侧重点是时间,即最近访问。也即,缓冲区的管理有一个过期机制,通过过期时间和LRU算法管理。缓存数据是有时效性的,所以当缓存刷新线程拿到最新的数据时先保存到堆外缓存容器,然后检查缓冲区是否有旧数据,首先检查数据是否是在链尾(LRU算法的链尾),如果不在链尾,则把最新数据覆盖到缓冲区并更新过期时间。如果在链尾,则检查是否已经过期,如果过期,则执行LRU算法淘汰缓冲区缓存,如果没有过期则不做任何改动。
进一步地,Java虚拟机采用LFU算法管理堆外缓存容器。LFU算法,即最不经常使用淘汰算法,该算法会使用一个Map(映射)结构记录每一块内存的使用次数,每次使用缓存都会在使用次数上加1,当划定的总内存到达临界点,如果有新的缓存进来时会把访问次数最少的缓存块清理掉。这个算法侧重点是访问次数。
采用本实施例的JVM缓存系统,平均GC时长减少6.2%,半小时GC总时长减少8.9%,接口响应速度提升22.1%。
本实施例还提供一种JVM缓存方法,参照图3,该JVM缓存方法包括以下步骤:
步骤S301、Java虚拟机通过本地的方式申请和释放堆外缓存容器。
作为一种较佳的实施方式,JVM缓存方法还包括:
步骤S302、Java虚拟机采用LRU算法管理堆外缓存容器。
作为一种较佳的实施方式,JVM缓存方法还包括:
步骤S303、Java虚拟机采用LFU算法管理堆外缓存容器。
采用本实施例的JVM缓存方法,平均GC时长减少6.2%,半小时GC总时长减少8.9%,接口响应速度提升22.1%。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (10)
1.一种JVM缓存系统,其特征在于,包括Java虚拟机和堆外缓存容器;
所述Java虚拟机通过本地的方式申请和释放所述堆外缓存容器。
2.如权利要求1所述的JVM缓存系统,其特征在于,所述Java虚拟机采用LRU算法管理所述堆外缓存容器。
3.如权利要求1所述的JVM缓存系统,其特征在于,所述Java虚拟机采用LFU算法管理所述堆外缓存容器。
4.如权利要求1所述的JVM缓存系统,其特征在于,所述Java虚拟机包括缓存管理区,所述缓存管理区包括缓冲区,所述缓存管理区用于从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
5.如权利要求4所述的JVM缓存系统,其特征在于,所述缓存管理区用于在所述缓冲区中查询是否存在目标数据,如果存在所述目标数据,则所述缓存管理区用于获取所述目标数据,如果不存在所述目标数据,则所述缓存管理区用于从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
6.一种JVM缓存方法,其特征在于,包括以下步骤:
Java虚拟机通过本地的方式申请和释放堆外缓存容器。
7.如权利要求6所述的JVM缓存方法,其特征在于,所述JVM缓存方法还包括:
所述Java虚拟机采用LRU算法管理所述堆外缓存容器。
8.如权利要求6所述的JVM缓存方法,其特征在于,所述JVM缓存方法还包括:
所述Java虚拟机采用LFU算法管理所述堆外缓存容器。
9.如权利要求6所述的JVM缓存方法,其特征在于,所述Java虚拟机包括缓存管理区,所述缓存管理区包括缓冲区;所述JVM缓存方法还包括以下步骤:
所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
10.如权利要求9所述的JVM缓存方法,其特征在于,所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区的步骤包括:
所述缓存管理区在所述缓冲区中查询是否存在目标数据,如果存在所述目标数据,则所述缓存管理区获取所述目标数据,如果不存在所述目标数据,则所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910808688.9A CN110515703A (zh) | 2019-08-29 | 2019-08-29 | Jvm缓存系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910808688.9A CN110515703A (zh) | 2019-08-29 | 2019-08-29 | Jvm缓存系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110515703A true CN110515703A (zh) | 2019-11-29 |
Family
ID=68628987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910808688.9A Pending CN110515703A (zh) | 2019-08-29 | 2019-08-29 | Jvm缓存系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515703A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608804A (zh) * | 2021-10-11 | 2021-11-05 | 北京华品博睿网络技术有限公司 | 一种可持久化的Java堆外缓存系统及方法 |
CN117251120A (zh) * | 2023-11-17 | 2023-12-19 | 杭州乒乓智能技术有限公司 | 基于jvm堆外内存的对账系统优化方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196937A (zh) * | 2017-12-26 | 2018-06-22 | 金蝶软件(中国)有限公司 | 字符串对象的处理方法、装置、计算机设备和存储介质 |
CN108614847A (zh) * | 2016-12-30 | 2018-10-02 | 北京京东尚科信息技术有限公司 | 一种数据的缓存方法及系统 |
CN109101554A (zh) * | 2018-07-12 | 2018-12-28 | 厦门中控智慧信息技术有限公司 | 用于java平台的数据缓存系统、方法以及计算机终端 |
-
2019
- 2019-08-29 CN CN201910808688.9A patent/CN110515703A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614847A (zh) * | 2016-12-30 | 2018-10-02 | 北京京东尚科信息技术有限公司 | 一种数据的缓存方法及系统 |
CN108196937A (zh) * | 2017-12-26 | 2018-06-22 | 金蝶软件(中国)有限公司 | 字符串对象的处理方法、装置、计算机设备和存储介质 |
CN109101554A (zh) * | 2018-07-12 | 2018-12-28 | 厦门中控智慧信息技术有限公司 | 用于java平台的数据缓存系统、方法以及计算机终端 |
Non-Patent Citations (1)
Title |
---|
二营长的意大利面: ""JVM中的堆外内存(off-heap memory)与堆内内存(on-heap memory)"", 《CSDN》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608804A (zh) * | 2021-10-11 | 2021-11-05 | 北京华品博睿网络技术有限公司 | 一种可持久化的Java堆外缓存系统及方法 |
CN117251120A (zh) * | 2023-11-17 | 2023-12-19 | 杭州乒乓智能技术有限公司 | 基于jvm堆外内存的对账系统优化方法、装置、设备及介质 |
CN117251120B (zh) * | 2023-11-17 | 2024-03-01 | 杭州乒乓智能技术有限公司 | 基于jvm堆外内存的对账系统优化方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090327621A1 (en) | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager | |
CN102542034B (zh) | 一种数据库接口的结果集缓存方法 | |
US10725903B2 (en) | Unified paging scheme for dense and sparse translation tables on flash storage systems | |
CN103617131B (zh) | 一种实现数据缓存的方法 | |
CN107832013B (zh) | 一种管理固态硬盘映射表的方法 | |
US7856522B2 (en) | Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory | |
US9898200B2 (en) | Memory device having a translation layer with multiple associative sectors | |
US7793049B2 (en) | Mechanism for data cache replacement based on region policies | |
US8880784B2 (en) | Random write optimization techniques for flash disks | |
KR101183009B1 (ko) | 메모리 관리 | |
US20160283125A1 (en) | Multi-streamed solid state drive | |
CN110389942B (zh) | 一种无垃圾回收的键值分离存储方法和系统 | |
JP3864256B2 (ja) | 仮想メモリを管理するための方法およびプロファイリング・キャッシュ | |
CN1130641C (zh) | 具有永久性存储器的可恢复磁盘控制系统 | |
US20060173939A1 (en) | Garbage collection and compaction | |
CN101477492A (zh) | 一种用于固态硬盘的循环重写闪存均衡方法 | |
CN103246696A (zh) | 高并发数据库的访问方法及应用于多服务器系统的方法 | |
CN110515703A (zh) | Jvm缓存系统和方法 | |
CN108845957B (zh) | 一种置换和回写自适应的缓冲区管理方法 | |
CN102981963A (zh) | 一种固态盘的闪存转换层的实现方法 | |
US20040199556A1 (en) | Incremental scanning of enormous objects to improve scheduling and pause-time behavior of garbage collection | |
CN107102954B (zh) | 一种基于失效概率的固态存储分级管理方法及系统 | |
CN107451071A (zh) | 一种缓存置换方法及系统 | |
CN108762916B (zh) | 一种内存管理方法、装置、设备及计算机可读存储介质 | |
US20020194210A1 (en) | Method for using non-temporal stores to improve garbage collection algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191129 |