CN110515703A - Jvm缓存系统和方法 - Google Patents

Jvm缓存系统和方法 Download PDF

Info

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
Application number
CN201910808688.9A
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.)
Shanghai Ctrip Business Co Ltd
Original Assignee
Shanghai Ctrip Business 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 Shanghai Ctrip Business Co Ltd filed Critical Shanghai Ctrip Business Co Ltd
Priority to CN201910808688.9A priority Critical patent/CN110515703A/zh
Publication of CN110515703A publication Critical patent/CN110515703A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory 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缓存系统和方法
技术领域
本发明属于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缓存方法,其特征在于,所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区的步骤包括:
所述缓存管理区在所述缓冲区中查询是否存在目标数据,如果存在所述目标数据,则所述缓存管理区获取所述目标数据,如果不存在所述目标数据,则所述缓存管理区从所述堆外缓存容器获取目标数据并存储至所述缓冲区。
CN201910808688.9A 2019-08-29 2019-08-29 Jvm缓存系统和方法 Pending CN110515703A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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平台的数据缓存系统、方法以及计算机终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
二营长的意大利面: ""JVM中的堆外内存(off-heap memory)与堆内内存(on-heap memory)"", 《CSDN》 *

Cited By (3)

* Cited by examiner, † Cited by third party
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