亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cmsmemorymonitor.java

?? cms是開源的框架
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*
 * File   : $Source: /usr/local/cvs/opencms/src/org/opencms/monitor/CmsMemoryMonitor.java,v $
 * Date   : $Date: 2006/03/27 14:53:04 $
 * Version: $Revision: 1.58 $
 *
 * This library is part of OpenCms -
 * the Open Source Content Mananagement System
 *
 * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * For further information about Alkacon Software GmbH, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.monitor;

import org.opencms.cache.CmsLruCache;
import org.opencms.file.CmsFile;
import org.opencms.file.CmsGroup;
import org.opencms.file.CmsObject;
import org.opencms.file.CmsProject;
import org.opencms.file.CmsProperty;
import org.opencms.file.CmsPropertyDefinition;
import org.opencms.file.CmsResource;
import org.opencms.file.CmsUser;
import org.opencms.flex.CmsFlexCache.CmsFlexCacheVariation;
import org.opencms.mail.CmsMailTransport;
import org.opencms.mail.CmsSimpleMail;
import org.opencms.main.CmsEvent;
import org.opencms.main.CmsLog;
import org.opencms.main.CmsSessionManager;
import org.opencms.main.I_CmsEventListener;
import org.opencms.main.OpenCms;
import org.opencms.scheduler.I_CmsScheduledJob;
import org.opencms.security.CmsAccessControlList;
import org.opencms.security.CmsPermissionSet;
import org.opencms.util.CmsDateUtil;
import org.opencms.util.CmsStringUtil;
import org.opencms.util.CmsUUID;
import org.opencms.util.PrintfFormat;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.ConcurrentModificationException;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.mail.internet.InternetAddress;

import org.apache.commons.collections.map.LRUMap;
import org.apache.commons.logging.Log;

/**
 * Monitors OpenCms memory consumtion.<p>
 * 
 * @author Carsten Weinholz 
 * @author Michael Emmerich 
 * @author Alexander Kandzior 
 * 
 * @version $Revision: 1.58 $ 
 * 
 * @since 6.0.0 
 */
public class CmsMemoryMonitor implements I_CmsScheduledJob {

    /** Set interval for clearing the caches to 10 minutes. */
    private static final int INTERVAL_CLEAR = 1000 * 60 * 10;

    /** The log object for this class. */
    private static final Log LOG = CmsLog.getLog(CmsMemoryMonitor.class);

    /** Flag indicating if monitor is currently running. */
    private static boolean m_currentlyRunning;

    /** Maximum depth for object size recursion. */
    private static final int MAX_DEPTH = 5;

    /** The memory monitor configuration. */
    private CmsMemoryMonitorConfiguration m_configuration;

    /** Interval in which emails are send. */
    private int m_intervalEmail;

    /** Interval in which the log is written. */
    private int m_intervalLog;

    /** Interval between 2 warnings. */
    private int m_intervalWarning;

    /** The time the caches were last cleared. */
    private long m_lastClearCache;

    /** The time the last status email was send. */
    private long m_lastEmailStatus;

    /** The time the last warning email was send. */
    private long m_lastEmailWarning;

    /** The time the last status log was written. */
    private long m_lastLogStatus;

    /** The time the last warning log was written. */
    private long m_lastLogWarning;

    /** The number of times the log entry was written. */
    private int m_logCount;

    /** Memory percentage to reach to go to warning level. */
    private int m_maxUsagePercent;

    /** The average memory status. */
    private CmsMemoryStatus m_memoryAverage;

    /** The current memory status. */
    private CmsMemoryStatus m_memoryCurrent;

    /** Contains the object to be monitored. */
    private Map m_monitoredObjects;

    /** Flag for memory warning mail send. */
    private boolean m_warningLoggedSinceLastStatus;

    /** Flag for memory warning mail send. */
    private boolean m_warningSendSinceLastStatus;

    /**
     * Empty constructor, required by OpenCms scheduler.<p>
     */
    public CmsMemoryMonitor() {

        m_monitoredObjects = new HashMap();
    }

    /**
     * Returns the size of objects that are instances of
     * <code>byte[]</code>, <code>String</code>, <code>CmsFile</code>,<code>I_CmsLruCacheObject</code>.<p>
     * For other objects, a size of 0 is returned.
     * 
     * @param obj the object
     * @return the size of the object 
     */
    public static int getMemorySize(Object obj) {

        if (obj instanceof I_CmsMemoryMonitorable) {
            return ((I_CmsMemoryMonitorable)obj).getMemorySize();
        }

        if (obj instanceof byte[]) {
            // will always be a total of 16 + 8
            return 8 + (int)(Math.ceil(((byte[])obj).length / 16.0) * 16.0);
        }

        if (obj instanceof String) {
            // will always be a total of 16 + 24
            return 24 + (int)(Math.ceil(((String)obj).length() / 8.0) * 16.0);
        }

        if (obj instanceof CmsFile) {
            CmsFile f = (CmsFile)obj;
            if (f.getContents() != null) {
                return f.getContents().length + 1024;
            } else {
                return 1024;
            }
        }

        if (obj instanceof CmsUUID) {
            return 184; // worst case if UUID String has been generated
        }

        if (obj instanceof CmsPermissionSet) {
            return 16; // two ints
        }

        if (obj instanceof CmsResource) {
            return 1024; // estimated size
        }

        if (obj instanceof CmsUser) {
            return 2048; // estimated size
        }

        if (obj instanceof CmsGroup) {
            return 512; // estimated size
        }

        if (obj instanceof CmsProject) {
            return 512;
        }

        if (obj instanceof Boolean) {
            return 8; // one boolean
        }

        if (obj instanceof CmsProperty) {
            int size = 8;

            CmsProperty property = (CmsProperty)obj;
            size += getMemorySize(property.getName());

            if (property.getResourceValue() != null) {
                size += getMemorySize(property.getResourceValue());
            }

            if (property.getStructureValue() != null) {
                size += getMemorySize(property.getStructureValue());
            }

            return size;
        }

        if (obj instanceof CmsPropertyDefinition) {
            int size = 8;

            CmsPropertyDefinition propDef = (CmsPropertyDefinition)obj;
            size += getMemorySize(propDef.getName());
            size += getMemorySize(propDef.getId());

            return size;
        }

        // System.err.println("Unresolved: " + obj.getClass().getName());
        return 8;
    }

    /**
     * Returns if monitoring is enabled.<p>
     * 
     * @return true if monitoring is enabled
     */
    public boolean enabled() {

        return true;
    }

    /**
     * Returns the configuration.<p>
     *
     * @return the configuration
     */
    public CmsMemoryMonitorConfiguration getConfiguration() {

        return m_configuration;
    }

    /**
     * Returns the log count.<p>
     *
     * @return the log count
     */
    public int getLogCount() {

        return m_logCount;
    }

    /**
     * Initializes the monitor with the provided configuration.<p>
     * 
     * @param configuration the configuration to use
     */
    public void initialize(CmsMemoryMonitorConfiguration configuration) {

        m_memoryAverage = new CmsMemoryStatus();
        m_memoryCurrent = new CmsMemoryStatus();

        m_warningSendSinceLastStatus = false;
        m_warningLoggedSinceLastStatus = false;
        m_lastEmailWarning = 0;
        m_lastEmailStatus = 0;
        m_lastLogStatus = 0;
        m_lastLogWarning = 0;
        m_lastClearCache = 0;
        m_configuration = configuration;

        m_intervalWarning = 720 * 60000;
        m_maxUsagePercent = 90;

        m_intervalEmail = m_configuration.getEmailInterval() * 1000;
        m_intervalLog = m_configuration.getLogInterval() * 1000;

        if (m_configuration.getWarningInterval() > 0) {
            m_intervalWarning = m_configuration.getWarningInterval();
        }
        m_intervalWarning *= 1000;

        if (m_configuration.getMaxUsagePercent() > 0) {
            m_maxUsagePercent = m_configuration.getMaxUsagePercent();
        }

        if (CmsLog.INIT.isInfoEnabled()) {

            CmsLog.INIT.info(Messages.get().getBundle().key(
                Messages.LOG_MM_INTERVAL_LOG_1,
                new Integer(m_intervalLog / 1000)));
            CmsLog.INIT.info(Messages.get().getBundle().key(
                Messages.LOG_MM_INTERVAL_EMAIL_1,
                new Integer(m_intervalEmail / 1000)));
            CmsLog.INIT.info(Messages.get().getBundle().key(
                Messages.LOG_MM_INTERVAL_WARNING_1,
                new Integer(m_intervalWarning / 1000)));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清在线精品| 日本久久一区二区| 日本精品视频一区二区三区| 欧美一级午夜免费电影| 亚洲欧美一区二区三区久本道91 | 国产精品福利在线播放| 蜜桃av一区二区| 欧美日韩www| 亚洲精品你懂的| 国产91精品露脸国语对白| 日韩欧美精品在线| 亚洲成人精品一区二区| 91在线视频播放地址| 国产日产精品一区| 九九九久久久精品| 欧美一区二区黄色| 青青草97国产精品免费观看无弹窗版| 色欧美片视频在线观看在线视频| 久久久综合视频| 国精产品一区一区三区mba桃花| 91精品久久久久久久91蜜桃| 亚洲一区二区三区美女| 欧美日韩亚洲综合| 中文字幕成人av| 国产精品一区二区视频| 337p日本欧洲亚洲大胆精品| 日本女优在线视频一区二区| 欧美男男青年gay1069videost| 一区二区在线观看免费视频播放| 色综合色狠狠综合色| 亚洲色欲色欲www在线观看| 99国产精品久久久久| 亚洲视频一二三| 91在线免费看| 亚洲国产欧美在线人成| 欧美美女喷水视频| 日本美女一区二区三区| 欧美一区二区免费视频| 奇米精品一区二区三区四区| 日韩三级在线免费观看| 九九精品一区二区| 国产午夜精品美女毛片视频| 国产成人8x视频一区二区| 国产精品三级av| 91视频com| 亚洲福利视频三区| 精品久久国产97色综合| 国产风韵犹存在线视精品| 亚洲欧美一区二区不卡| 欧美日本在线看| 久久99精品久久久久久国产越南 | 国产综合色视频| 亚洲国产电影在线观看| 在线观看91精品国产入口| 亚洲bt欧美bt精品| 久久久精品国产99久久精品芒果| av成人免费在线| 日韩精品91亚洲二区在线观看| 精品国产乱码久久久久久夜甘婷婷| 国产一区二区精品久久99| 亚洲视频一区二区在线观看| 欧美三级视频在线观看 | 香蕉av福利精品导航| 欧美变态tickle挠乳网站| 不卡视频在线看| 日韩成人免费电影| 国产精品久久久久9999吃药| 欧美日韩成人在线一区| 粉嫩aⅴ一区二区三区四区五区| 亚洲国产精品综合小说图片区| 久久夜色精品国产噜噜av| 色婷婷久久综合| 韩国v欧美v日本v亚洲v| 亚洲va在线va天堂| 国产精品久久久久久久久动漫 | 不卡的看片网站| 日本vs亚洲vs韩国一区三区 | 欧美国产禁国产网站cc| 欧美男同性恋视频网站| 成人免费视频国产在线观看| 日产精品久久久久久久性色| 中文字幕亚洲精品在线观看| 精品少妇一区二区三区在线播放| 一本一道综合狠狠老| 国产精品一区免费视频| 日韩精品亚洲一区| 亚洲女人小视频在线观看| 久久久www免费人成精品| 欧美老女人在线| 91久久精品一区二区三区| 国产69精品久久久久毛片| 日本欧美一区二区在线观看| 亚洲午夜电影网| 中文字幕一区二区三区视频| 久久久久国产精品免费免费搜索| 91精品综合久久久久久| 欧美专区亚洲专区| 91在线免费播放| 91在线视频官网| 99视频有精品| 成人激情综合网站| 高清av一区二区| 国产福利精品一区| 国产黄色成人av| 国产中文字幕一区| 麻豆国产一区二区| 蜜臀a∨国产成人精品| 日韩av在线发布| 午夜精品免费在线观看| 亚洲午夜久久久久久久久久久| 亚洲欧美日本在线| 亚洲免费在线看| 亚洲国产一区二区视频| 一卡二卡欧美日韩| 亚洲一区二区av电影| 亚洲成av人片一区二区梦乃| 亚洲成a人在线观看| 亚洲国产成人av| 午夜精品免费在线观看| 免费欧美在线视频| 国产中文字幕精品| 成人美女视频在线观看| 成人av在线影院| 色综合久久综合网欧美综合网| 91美女视频网站| 欧美亚洲高清一区二区三区不卡| 欧美少妇bbb| 日韩一级免费观看| 国产午夜亚洲精品羞羞网站| 欧美激情一区二区三区不卡| 亚洲人亚洲人成电影网站色| 亚洲激情校园春色| 日本一道高清亚洲日美韩| 精品一区二区久久久| 成人久久视频在线观看| 91麻豆国产福利在线观看| 欧美视频精品在线观看| 日韩欧美中文字幕一区| 国产精品乱码人人做人人爱 | 亚洲免费观看高清完整版在线| 亚洲国产另类精品专区| 国产在线视频精品一区| 91网站视频在线观看| 欧美丰满少妇xxxxx高潮对白| 日韩欧美成人午夜| 国产精品每日更新在线播放网址| 亚洲综合免费观看高清完整版 | 色88888久久久久久影院按摩| 欧美精品亚洲一区二区在线播放| 久久久国产精品麻豆| 亚洲一区二区在线播放相泽 | 欧美国产精品一区二区| 亚洲成av人片在线观看| 岛国一区二区在线观看| 欧美人动与zoxxxx乱| 久久久精品2019中文字幕之3| 亚洲自拍欧美精品| 国产精品69毛片高清亚洲| 精品视频一区三区九区| 欧美激情一区二区三区在线| 丝袜诱惑制服诱惑色一区在线观看 | 成人手机在线视频| 91精品久久久久久蜜臀| 亚洲欧洲99久久| 黄色日韩三级电影| 欧美三级在线看| 亚洲色图视频网| 国产高清久久久久| 制服丝袜亚洲色图| 一区二区三区加勒比av| 成人三级在线视频| 26uuu另类欧美亚洲曰本| 天天色天天操综合| 色婷婷亚洲婷婷| 国产精品网站在线播放| 激情欧美一区二区| 欧美一区二区三区男人的天堂| 亚洲精品国产无天堂网2021| 成人国产在线观看| 久久精品视频免费| 精品一区二区三区影院在线午夜 | 欧美精品在线一区二区三区| 亚洲色图视频免费播放| 99免费精品视频| 中文字幕国产精品一区二区| 激情久久久久久久久久久久久久久久| 4438成人网| 日韩中文字幕一区二区三区| 欧美伊人久久久久久久久影院| 亚洲另类春色国产| 色妞www精品视频| 亚洲激情一二三区| 91精品福利视频| 一区二区在线看| 欧美日韩在线免费视频| 亚洲国产成人91porn| 91精品国产手机| 美女一区二区三区在线观看| 日韩精品一区在线观看| 国产一区二区在线电影|