ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/util/CacheTQ.java

Path
ttomcat-1778514358873.zip-extract/_dependencies/maven/com.h2database_h2-2.2.220/org/h2/util/CacheTQ.java
Status
scanned
Type
file
Name
CacheTQ.java
Extension
.java
Programming language
Java
Mime type
text/x-java
File type
Java source, ASCII text
Tag

      
    
Rootfs path

      
    
Size
3667 (3.6 KB)
MD5
e072799b5c48d01d0db79f529fc04457
SHA1
ed5876da47598f9822a4e760622690d5d973fe1f
SHA256
962121422a365ee2a2d694636c97969c1a536cbed066e2056eaa74ff82bde828
SHA512

      
    
SHA1_git
75d3381670c1e009f2cfe9ceea61f8a807998d45
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
CacheTQ.java | 3.6 KB |

/* * Copyright 2004-2023 H2 Group. Multiple-Licensed under the MPL 2.0, * and the EPL 1.0 (https://h2database.com/html/license.html). * Initial Developer: H2 Group */ package org.h2.util; import java.util.ArrayList; /** * An alternative cache implementation. This implementation uses two caches: a * LRU cache and a FIFO cache. Entries are first kept in the FIFO cache, and if * referenced again then marked in a hash set. If referenced again, they are * moved to the LRU cache. Stream pages are never added to the LRU cache. It is * supposed to be more or less scan resistant, and it doesn't cache large rows * in the LRU cache. */ public class CacheTQ implements Cache { static final String TYPE_NAME = "TQ"; private final Cache lru; private final Cache fifo; private final SmallLRUCache<Integer, Object> recentlyUsed = SmallLRUCache.newInstance(1024); private int lastUsed = -1; private int maxMemory; CacheTQ(CacheWriter writer, int maxMemoryKb) { this.maxMemory = maxMemoryKb; lru = new CacheLRU(writer, (int) (maxMemoryKb * 0.8), false); fifo = new CacheLRU(writer, (int) (maxMemoryKb * 0.2), true); setMaxMemory(4 * maxMemoryKb); } @Override public void clear() { lru.clear(); fifo.clear(); recentlyUsed.clear(); lastUsed = -1; } @Override public CacheObject find(int pos) { CacheObject r = lru.find(pos); if (r == null) { r = fifo.find(pos); } return r; } @Override public CacheObject get(int pos) { CacheObject r = lru.find(pos); if (r != null) { return r; } r = fifo.find(pos); if (r != null && !r.isStream()) { if (recentlyUsed.get(pos) != null) { if (lastUsed != pos) { fifo.remove(pos); lru.put(r); } } else { recentlyUsed.put(pos, this); } lastUsed = pos; } return r; } @Override public ArrayList<CacheObject> getAllChanged() { ArrayList<CacheObject> lruChanged = lru.getAllChanged(); ArrayList<CacheObject> fifoChanged = fifo.getAllChanged(); ArrayList<CacheObject> changed = new ArrayList<>(lruChanged.size() + fifoChanged.size()); changed.addAll(lruChanged); changed.addAll(fifoChanged); return changed; } @Override public int getMaxMemory() { return maxMemory; } @Override public int getMemory() { return lru.getMemory() + fifo.getMemory(); } @Override public void put(CacheObject r) { if (r.isStream()) { fifo.put(r); } else if (recentlyUsed.get(r.getPos()) != null) { lru.put(r); } else { fifo.put(r); lastUsed = r.getPos(); } } @Override public boolean remove(int pos) { boolean result = lru.remove(pos); if (!result) { result = fifo.remove(pos); } recentlyUsed.remove(pos); return result; } @Override public void setMaxMemory(int maxMemoryKb) { this.maxMemory = maxMemoryKb; lru.setMaxMemory((int) (maxMemoryKb * 0.8)); fifo.setMaxMemory((int) (maxMemoryKb * 0.2)); recentlyUsed.setMaxSize(4 * maxMemoryKb); } @Override public CacheObject update(int pos, CacheObject record) { if (lru.find(pos) != null) { return lru.update(pos, record); } return fifo.update(pos, record); } }
Detected license expression
mpl-2.0 AND epl-1.0
Detected license expression (SPDX)
MPL-2.0 AND EPL-1.0
Percentage of license text
2.3
Copyrights
- end_line: 2
  copyright: Copyright 2004-2023 H2 Group. Multiple-Licensed
  start_line: 2
Holders
- holder: H2 Group. Multiple-Licensed
  end_line: 2
  start_line: 2
Authors

      
    
License detections License expression License expression SPDX
mpl_2_0_and_epl_1_0-796bf8d7-f485-3520-923d-e6a4b1ecd2f3 mpl-2.0 AND epl-1.0 MPL-2.0 AND EPL-1.0
URL Start line End line
https://h2database.com/html/license.html 3 3
Package URL License Primary language
pkg:osgi/com.h2database.source@2.2.220