精华内容
下载资源
问答
  • 硬盘空间不足导致程序启动失败。...空间不足也会导致jsp编译失败,so页面找不到。tongweb控制台也是jsp,所以也打不开。删掉没用的,释放空间,重启tongweb,问题解决! du -sh 查看当前目录占用空间 ...

    硬盘空间不足导致程序启动失败。
    硬盘空间有30G,部署tongweb,及应用程序,重启后,tongweb控制台打不开,应用好多界面找不到。经过查询tongweb日志,发现报空间不足,df查看服务器硬盘使用空间,果然,只剩几十兆。空间不足也会导致jsp编译失败,页面找不到。tongweb控制台也是jsp,所以也打不开。删掉没用的,释放空间,重启tongweb,问题解决!
    du -sh 查看当前目录占用空间

    df -hd2 查看空间占用情况

    展开全文
  • 扩充一个盘或者找另一个盘(F)把当前空间不足的盘(D盘)的全部内容备份过去,然后把(D)改名成H盘 在把F盘改成D盘 这样新的F盘就变成了D盘。若盘上有分页文件,不能改时 用下面的办法   取消页面文件办法:::::...

    扩充一个盘或者找另一个盘(F)把当前空间不足的盘(D盘)的全部内容备份过去,然后把(D)改名成H盘 在把F盘改成D盘 这样新的F盘就变成了D盘。若盘上有分页文件,不能改时 用下面的办法

     

    取消页面文件办法::::::::::我的电脑(鼠标右键-属性-高级-性能(设置)-性能选项-高级-虚拟内存(更改) 取消自定义大小,设置系统管理大小,后点下设置,确定,重启电脑

    重启后就可以更改了!

    展开全文
  • 1.报错信息:SQL1218N 在缓冲池 4096 中当前没有任何页面可用(表面上看是4k的buffer不足,调大后错误仍然存在) 2.经定位后找到原因:由于自定义的表空间过大初始化失败.使用db2diag -time 2011-05-18找到的错误信息:...

    1.报错信息:SQL1218N 在缓冲池 4096 中当前没有任何页面可用(表面上看是4k的buffer不足,调大后错误仍然存在)

    2.经定位后找到原因:由于自定义的表空间过大初始化失败.

    (1)使用db2diag -time 2011-05-18找到的错误信息:

          db2 will use buffer pool ID "4096" 2011-05-18-20.03.01.859000+480 E10001937H805 LEVEL: Warning PID : 9544 TID : 9492 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-7 APPID: *LOCAL.DB2.110518120300 AUTHID : EDWDATA EDUID : 9492 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:2 MESSAGE : ADM6073W The table space "SYSTOOLSTMPSPACE" (ID "9") is configured to use buffer pool ID "1", but this buffer pool is not active at this time. In the interim the table space will use buffer pool ID "4096". The inactive buffer pool should become available at next database startup provided that the required memory is available.

     (2)另外察看buffer的使用情况,也没有自己定义的buffer
         update monitor switches using bufferpool on
         db2 get snapshot for bufferpools on edw

     

    3.最终导致的错误:buffer不足。(因为db2隐藏的buffer很小,只有16个页面,导致不够用)

    2011-05-18-20.03.14.593000+480 E10004447H557 LEVEL: Error PID : 9544 TID : 588 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-11 APPID: *LOCAL.DB2.110518120312 AUTHID : EDWDATA EDUID : 588 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, Common Trace API, sqlbFreeUpSlot, probe:122 MESSAGE : ADM6019E All pages in buffer pool "IBMSYSTEMBP4K" (ID "4096") are in use. Refer to the documentation for SQLCODE -1218.

     

    4.隐藏的buffer: IBMSYSTEMBP4K IBMSYSTEMBP8K IBMSYSTEMBP16K IBMSYSTEMBP32K 只有在buffer pool initialization failed时才使用这些buffer

    2011-05-18-20.03.02.125000+480 I10003780H665 LEVEL: Warning PID : 9544 TID : 9492 PROC : db2syscs.exe INSTANCE: DB2 NODE : 000 DB : EDW_BACK APPHDL : 0-7 APPID: *LOCAL.DB2.110518120300 AUTHID : EDWDATA EDUID : 9492 EDUNAME: db2agent (EDW_BACK) 0 FUNCTION: DB2 UDB, Self tuning memory manager, stmmStartSTMMIfNecessary, probe:490 MESSAGE : ZRC=0x87AE015F=-2018639521=STMM_DAEMON_COULD_NOT_START "STMM Daemon could not be started" DATA #1 : String, 89 bytes The self tuning memory manager was not started because buffer pool initialization failed.

     

     5.解决方案:减小buffer的大小.

     

     6.问题的诱因:2011-05-18,由于机房的空调出现问题,导致这个主机重新启动.启动之后数据也正常启动(表面上看是正常启动,实际上错误日志里已经有了警告信息).另外在该主机上我们还部署了etl工具的agent上一周我们把agent的个数调大了,一直没有重新启动agent服务.这次的机器重启,引发了agent服务和db的资源争用,导致数据库表空间自定义的buffer初始化失败,系统使用隐藏的buffer,隐藏的buffer都比较小,所以报"缓冲池 4096 中当前没有任何页面可用"

     

    7.总结:db2 vs oracle

     如果oracle的内存(sga+pga)初始化失败,会导致数据库启动失败.

     如果db2的内存初始化失败,会使用隐藏的buffer,以保证数据库的启动.但是后续的应用会出现很多问题.

    展开全文
  • 在现在通用的操作系统中为了解决内存不足这个问题,提出了虚拟内存这种解决方案,其实虚拟内存也就是将机器的内存分为多个页面(提个小问题,一个页面包含了多少kb的空间?),内存中只存放当前需要的页面...

    什么是LRU算法

    LRU(Least Recently Used),也就是最近最少使用。一种有限的空间资源管理的解决方案,会在空间资源不足的情况下移除掉最近没被使用过的数据,以保证接下来需要的空间资源。

    在现在通用的操作系统中为了解决内存不足这个问题,提出了虚拟内存这种解决方案,其实虚拟内存也就是将机器的内存分为多个页面(提个小问题,一个页面包含了多少kb的空间?),内存中只存放当前需要的页面信息,暂时不使用的内存数据就保存到磁盘中。这可以很好的解决内存不足的问题。当然了这就无故出现页面交换的情况,使得读取内存的速度降低(磁盘的读取速度远小于内存的读取速度),这种方案肯定有利有弊,只需要我们的服务能够接受这种情况,那就完全没有问题。

    Redis做为一种内存数据库,内存大小对数据库的影响更重要,所以redis也需要及时的移除掉那些过期数据。在redis中有定时清楚、惰性删除、定期删除,但是其策略主要分为两种,基于访问时间和基于访问频率。基于访问时间就是LRU算法,看看LRU算法的图解过程,如下图。

    • 先定义好一个定长的队列
    • 按照FIFO的流程,依次申请一段空间
    • 直到队列被占满了,出现内存不足的情况,淘汰策略开始工作
    • 会淘汰队列中最先进入的数据,最先进去的数据也就是最近最久未被使用的数据,然后把其移除出队列

    LRU 算法小demo

    整体的算法实现没有太多的难度,维护一个有限长度的队列的进出,需要移除或者插入数据。时间复杂度可能会是个问题。

    • 队列如果是链表,则移除数据的时间复杂度是O(1),但是查找数据的时间复杂度是O(n)
    • 队列如果是数组,则移除数据的时间复杂度是O(n),而且移除数据还伴随着数组的平行移动,查找数据也是O(n),除非另外再加一个Map存储其索引值会使得其查找的速度降低到O(1),但是却又提高了空间复杂度

    接下来写个基于数组的LRU的简单代码

    public class LruDemo<T> {
    
        private Object[] items;
    
        private HashMap<T, Integer> map;
    
        private int size;
    
        private int index;
    
        public LruDemo() {
            this(8);
        }
    
        public LruDemo(int size) {
            this.size = size;
            this.items = new Object[size];
            this.map = new HashMap<>(16);
            this.index = 0;
        }
    
        public void put(T t) {
            Integer value = map.get(t);
            if (value == null) {
                if (index >= size) {
                    // 满了,需要移除第一个元素
                    for(int i=1; i<size;i++) {
                        items[i-1] = items[i];
                        map.replace((T)items[i-1], i);
                    }
                    index -= 1;
                }
                items[index] = t;
                map.put(t, index);
                index += 1;
            } else {
                for(int i=value; i<index; i++) {
                    items[i] = items[i+1];
                    map.replace((T)items[i], i);
                }
                items[index-1] = t;
                map.replace(t, index-1);
            }
        }
    
        public void getAll() {
            for(int i=0;i<index; i++) {
                System.out.println(items[i]);
            }
            System.out.println("======");
        }
    
        public static void main(String[] args) {
            LruDemo<String> lruDemo = new LruDemo<String>(6);
            lruDemo.put("aliace");
            lruDemo.put("bob");
            lruDemo.put("cat");
            lruDemo.put("dog");
            lruDemo.put("egg");
            lruDemo.getAll();
            lruDemo.put("bob");
            lruDemo.getAll();
            lruDemo.put("fine");
            lruDemo.put("good");
            lruDemo.getAll();
        }
    }

     输出的结果是

    aliace
    bob
    cat
    dog
    egg
    ======
    aliace
    cat
    dog
    egg
    bob
    ======
    cat
    dog
    egg
    bob
    fine
    good
    ======

    这只是一种简单的写法,而且效率也比较低,现在就来介绍下将要学习的LinkedHashMap

    LinkedHashMap

    LinkedHashMap是继承自HashMap的,只是另外添加了排序相关的功能,使得其成为了有序hashmap,关于HashMap的介绍可以看看Java8的HashMap原理学习,接下来重点关注LinkedHashMap相比HashMap拓展了哪些功能呢?

    Entry节点信息

    static class Entry<K,V> extends HashMap.Node<K,V> {
        Entry<K,V> before, after;
        Entry(int hash, K key, V value, Node<K,V> next) {
            super(hash, key, value, next);
        }
    }

    头尾节点

    transient LinkedHashMap.Entry<K,V> head;
    
    transient LinkedHashMap.Entry<K,V> tail;

    Entry节点就包含了前置节点和后置节点的地址信息,再加上在LinkedHashMap又中添加了head和tail头尾节点,这样就使得之前的链表+数据的数据结构基础上又加上了双向链表,通过双向链表实现有序性,并且 LinkedHashMap = Linked + HashMap

    accessOrder 值

    final boolean accessOrder; 是一个非常关键的字段值,暂时按下不表,接下来会知道其真正的含义

    get操作

    HashMap进行get操作还是很简单的,通过hash获取index,再可能涉及到链表(红黑树)的遍历操作,在LinkedHashMap中同样重写了相关方法

    public V get(Object key) {
        Node<K,V> e;
        if ((e = getNode(hash(key), key)) == null)
            return null;
        if (accessOrder)
            afterNodeAccess(e);
        return e.value;
    }

    进行常规的getNode操作后在找到对应的节点e之后,当accessOrder是true时,调用afterNodeAccess方法,从其名称也可以看出来时访问节点后的操作。

    void afterNodeAccess(Node<K,V> e) { // move node to last
        LinkedHashMap.Entry<K,V> last;
        if (accessOrder && (last = tail) != e) {
            LinkedHashMap.Entry<K,V> p =
                (LinkedHashMap.Entry<K,V>)e, b = p.before, a = p.after;
            // b 和 a 分别是访问的节点e的前置和后置节点
            p.after = null;
            if (b == null)
                head = a;
            else
                b.after = a;
                
            if (a != null)
                a.before = b;
            else
                last = b;
                
            if (last == null)
                head = p;
            else {
                p.before = last;
                last.after = p;
            }
            // 把其移动到双向链表的尾部节点
            tail = p;
            ++modCount;
        }
    }

    也就是说当accessOrder为true时,会修改其双向链表的节点顺序,而且搜索整个类也会发现accessOrder只在这里发挥用处。顺带观察下其key、value、entry的迭代器遍历情况,可以发现都是使用了for (LinkedHashMap.Entry<K,V> e = head; e != null; e = e.after) 这种条件去循环遍历。

    所以accessOrder就是起到控制访问顺序的作用,设置为true之后每访问一个元素,就将该元素移动到双向链表的尾部节点,通过改变节点在双向链表的位置实现对链表顺序的控制。

    put 操作

    在HashMap中通过put方法插入一个新的节点数据,LinkedHashMap并没有重写该方法。在HashMap中先检查是否存在对应的key,如果不存在则会通过newNode方法创建一个新节点,然后等待插入到合适的位置,LinkedHashMap则重写了newNode方法,如下代码块:

    Node<K,V> newNode(int hash, K key, V value, Node<K,V> e) {
        LinkedHashMap.Entry<K,V> p =
            new LinkedHashMap.Entry<K,V>(hash, key, value, e);
        linkNodeLast(p);
        return p;
    }
    
    // link at the end of list
    private void linkNodeLast(LinkedHashMap.Entry<K,V> p) {
        LinkedHashMap.Entry<K,V> last = tail;
        tail = p;
        if (last == null)
            head = p;
        else {
            p.before = last;
            last.after = p;
        }
    }

    创建完一个LinkedHashMap.Entry节点p后,p节点的before, after都是null,然后调用linkNodeLast方法,采取尾插法,形成新的尾节点(这里有一种情况是最早的时候tail==head==null的情况,会使得头节点和尾节点都指向同一个节点)。

    新插入一个节点后还会调用afterNodeInsertion方法,看起方法名称也知道是在node节点插入后的操作,在HashMap中是空实现,在LinkedHashMap则实现了该方法,如下代码块:

    void afterNodeInsertion(boolean evict) { // possibly remove eldest
        LinkedHashMap.Entry<K,V> first;
        if (evict && (first = head) != null && removeEldestEntry(first)) {
            K key = first.key;
            removeNode(hash(key), key, null, false, true);
        }
    }
        
    protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
        return false;
    }

    默认传入的evict值是true,而removeEldestEntry方法默认返回false,也就是什么都不做。当在put一个已经存在的节点的情况,会调用afterNodeAccess方法,也会去改变在链表中的位置。重写removeEldestEntry方法并且当起返回true时,调用removeNode节点移除head节点这个就包含了LRU最近最少使用的实现原理

    自定义LRU算法

    设置accessOrder为true后,每次访问、新增的节点都会移动到尾部,当removeEldestEntry返回true时就会移除头节点,那么只需要设置一种特定的判断逻辑使得removeEldestEntry返回true就可以了。按照上面LRU算法的思想,只有当空间满了的情况下才会移除头节点数据,同理只需要判断当前map中的节点数是否达到相关的阈值即可。继承LinkedHashMap重载removeEldestEntry方法,代码如下:

    public class LruMap<K,V> extends LinkedHashMap<K, V> {
    
        private int maxSize;
    
        public LruMap(int initialCapacity, float loadFactor, boolean accessOrder, int maxSize) {
            super(initialCapacity, loadFactor, accessOrder);
            this.maxSize = maxSize;
        }
    
        public LruMap(int maxSize) {
            this(16, 0.75f, true, maxSize);
        }
    
        public LruMap(int tableSize, int maxSize) {
            this(tableSize, 0.75f, true, maxSize);
        }
    
        @Override
        protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
            boolean flag = size() > maxSize;
            if (flag) {
                System.out.println("移除头节点, key:" + eldest.getKey() + ", value:" + eldest.getValue());
            }
            return flag;
        }
    
        public static void main(String[] args) {
            LruMap<Integer, String> lruMap = new LruMap<>(4, 4);
    
            lruMap.put(1, "aaaa");
            lruMap.put(2, "bbbb");
            lruMap.put(3, "cccc");
            lruMap.put(4, "dddd");
            lruMap.put(5, "eeee");
    
            lruMap.entrySet().forEach(node -> {
                System.out.println("key:" + node.getKey() + ", value:" + node.getValue());
            });
        }
    }

    运行结果如下图,测试了table大小时4个,当插入了1~4 4个节点后,再插入5这个节点时,会移除头节点也就是节点1,从输出的日志也很清楚了。

    如果利用get方法改变一下双向链表的顺序,可以控制移除的节点,修改一下测试数据,如下代码块

    lruMap.put(1, "aaaa");
    lruMap.put(2, "bbbb");
    lruMap.put(3, "cccc");
    lruMap.get(1);
    lruMap.get(2);
    lruMap.put(4, "dddd");
    lruMap.put(5, "eeee");

    这时候访问节点1和2,就会使得1和2移动到双向链表的尾部,头节点就是节点3,所以移除的头节点肯定是节点3,如下图符合我们的设想。

    总结

    本篇学习笔记主要是介绍了LRU算法和LinkedHashMap,并且根据LinkedHashMap的功能实现一个简单的LRU算法,关于LinkedHashMap只需要了解到accessOrder值和双向链表的顺序有关,而LRU删除节点则是在每次插入之后确认是否达到某种需要移除节点的条件。

    展开全文
  • 一、 简述sessionStorage 和 sessionStorage 是 HTML5 新增的两个特性,这两个特性主要是用来作为会话存储和本地存储来使用的,解决了 cookie 存储空间不足的问题;sessionStorage 属性允许你访问一个 session ...
  • 一、 简述sessionStorage 和 sessionStorage 是 HTML5 新增的两个特性,这两个特性主要是用来作为会话存储和本地存储来使用的,解决了 cookie 存储空间不足的问题;sessionStorage 属性允许你访问一个 session ...
  • 监视内存计数器 要监视内存不足的状况,请从以下的对象计数器开始: ...Pages/sec 表明由于硬件页面错误而从磁盘取出的页面数,或由于页面错误而写入磁盘以释放工作集空间页面数。 如果 Available Bytes 的值...
  • log Buffer空间不足时 log buffer 的大小是有限的,如果不停的往这个有限大小的log buffer里散入日志,很快就会被填满,如果当前写入log buffer的redo日志量已经占满了log buffer总容量的大约一半左右,就需要把这些...
  • sessionStorage 和 sessionStorage 是 HTML5 新增的两个特性,这两个特性主要是用来作为会话存储和本地存储来使用的,解决了 cookie 存储空间不足的问题; sessionStorage 属性允许你访问一个 session Storage 对象...
  • mysql-redo log下

    2021-01-12 14:49:27
    log buffer空间不足时 如果当前写入log buffer的redo日志量已经占满了log buffer总容量的大约一半左右,就需要把这些日志刷新到磁盘上。 事务提交时 要把修改这些页面对应的redo日志刷新到磁盘。 后台线程不停的...
  • 1. 中断点(Interruption Point): 在原理图绘制时,如果当前绘图区域的空间不足,需要转到其它页面继续绘制,而这两页之间存在连续的“信息流“时,可以使用“中断点“来传递这种“信息流“。当然有时候在同一页中,...
  • 中文错误: 一次网站突然出现问题 新建网站会报如下错误: 该 ... 找了半天的原因,最后发现问题原因竟然是后端数据库服务器空间不足造成的。(郁闷了,数据库服务器还有几KB空闲)但是MS的错误提示也太离谱了吧,风...
  • 一个是根目录的系统盘,另一个是空间不足外扩的文件盘,下文记录了如何将已创建好的文件盘挂载到新系统上: 首先打开虚拟机设置页面,选择添加->硬盘->SCSI->使用现有虚拟磁盘 找到原来创建的以vmdk为后缀...
  • ASP.NET的网页代码模型及生命周期

    热门讨论 2009-07-28 14:22:11
    创建一个单文件页模型,在【文件】按钮中选择【新建文件】选项,在弹出对话框中选择【Web窗体】或在右击当前项目,在下拉菜单中选择【添加新建项】选项即可创建一个.aspx页面,如图4-2所示。 图4-2 创建单文件页...
  • (3)针对页面自适应问题,本文结合渐进增强以及拥抱流式布局的思想,同时研究利用了移动设备的视口特性,实现跨分辨率、跨设备的页面自适应。 (4)针对系统的功能实现问题,通过结合利用原生态框架与HTML5的跨平台...
  • 本程序基本于.Net平台开发,默认支持Access数据库,可... 后台首页在权限不足的虚拟空间报错的问题(修复)5. 在绑定多个域名的情况下,获取当前地址有错误的问题(修复)6. 多处细节优化 后台用户名admin密码admin888
  • 本程序基本于.Net平台开发,默认支持Access数据库,可... 后台首页在权限不足的虚拟空间报错的问题(修复)5. 在绑定多个域名的情况下,获取当前地址有错误的问题(修复)6. 多处细节优化 后台用户名admin密码admin888
  • 本程序基本于.Net平台开发,默认支持... 后台首页在权限不足的虚拟空间报错的问题(修复) 5. 在绑定多个域名的情况下,获取当前地址有错误的问题(修复) 6. 多处细节优化   后台用户名admin密码admin888
  • (8)设置磁盘空间不足告警的临界值:用户可以自己设置磁盘空间不足告警的临界值 (9)自动最优化磁盘功能:对磁盘进行优化。 4.IE管理项功能如下: (1)定制IE标题:对IE浏览器的标题进行设置。 (2)定制IE起始...
  • 新增商品上架、下架管理功能,对于库存不足、季节不适等商品可以暂时下架,下架的信息后台优可看到,但前台不会显示,如需再次销售,可直接进行上架即可! 十八、支持商品图片水印/文字水印功能 网趣网上购物系统...
  • 新亮点:高级伪静态图片功能,图片不占用任何空间的情况下,缩略图伪静态自动处理为自定义合适尺寸,致使首页及列表等页面读取缩略图不再缓慢,极速访问。同时利于搜索引擎优化效果。 强大的图片处理功能,可对采集...
  • 内存空间不足,创建新进程失败 break; case 2: if (endProcess()) printf("Process is end!\n\n"); //进程已结束 else printf("Ending process fail!\n\n")...
  • 有什么不足? 答:好处是先前开发的软件可以在新处理器组成的系统中运行,保护了软件投资。缺点是处理器的结构发展受到兼容的约束,为了保持兼容性增加了硅资源的开销,增加了结构的复杂性。 23.80386内部结构由哪...
  •  0112 磁盘空间不足。  0113 没有其他可用的内部文件标识符。  0114 目标内部文件标识符不正确。  0117 该应用程序所运行的 IOCTL 调用不正确。  0118 校验写入的开关参数值不正确。  0119 系统不...
  • 网趣商城ASP源码

    2013-02-17 17:11:35
    新增商品上架、下架管理功能,对于库存不足、季节不适等商品可以暂时下架,下架的信息后台优可看到,但前台不会显示,如需再次销售,可直接进行上架即可! 十五、支持商品图片水印/文字水印功能 网趣网上购物系统...
  • 380.打印出的页面整版色淡 381.打印时漏墨 382.更换墨盒 383.更换打印机墨盒和维护打印机 384.墨水消耗特别快 385.装进新墨盒后墨尽指示灯仍亮 386.安装墨盒后面板灯报警 387.新装墨盒后打印机咔咔响 388.更换新墨盒...
  • 资讯发布系统(新闻发布系统),网上商城系统,互联问答系统,论坛(bbs),个人空间及在线考试系统等,这些系统集成在eBSite,您可以单独使用,也可以以站群的方式使用   详细介绍: eBSite网站工程的新特性: 1.PC...
  • LeadBBS v2.10 论坛.rar

    2019-08-30 11:11:43
    60.在线用户跟踪功能,跟踪当前浏览页面,所在论坛,所在帖子等. 61.支持查看特定论坛在线人数统计功能 62.论坛首页最上页显示登陆用户资料(包括IP,浏览器和操作系统) 63.支持论坛最后更新时间和发帖人功能 64....
  • css入门笔记

    2018-05-15 14:58:57
    规范页面中那些元素能够使用定义好的样式。 2.选择器详解 1.通用选择器 *{样式} 2.元素选择器 p{样式} 3.类选择器 1. 声明 .class名{样式} 2.引用可以引用多个类名用空格隔开 类名1 类名2 "> 4.id选择器...
  • 关闭硬盘空间不足时发出警告.reg 关机时自动清除文件记录.reg 关机时自动删除交换文件.reg 恢复注册表禁用.reg 激活DOS的快速编辑模式.reg 计算机启动时自动运行屏幕保护程序.reg 加快程序的运行速度.reg 加快...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

当前页面空间不足