如何准确有效地测量HttpSession大小

如何准确有效地测量HttpSession大小,session,servlets,size,Session,Servlets,Size,在基于servlet的应用程序中,是否有一些简单、有效和准确的方法来度量会话大小?最好测量方法应独立于应用服务器/容器。 我试着用Tomcat7上的Lambda探测器测量会话大小,但在我看来,它似乎非常不准确、缓慢且有问题。我认为应该有一些简单明了的方法,因为几乎每个优秀的JavaEE开发人员都关心会话大小 我想对我的应用程序进行压力测试,并测量会话膨胀。这是我们在应用程序本身中计算会话大小的方法: totalSize = 0; totalSerializable = 0; totalNumbe

在基于servlet的应用程序中,是否有一些简单、有效和准确的方法来度量会话大小?最好测量方法应独立于应用服务器/容器。
我试着用Tomcat7上的Lambda探测器测量会话大小,但在我看来,它似乎非常不准确、缓慢且有问题。我认为应该有一些简单明了的方法,因为几乎每个优秀的JavaEE开发人员都关心会话大小


我想对我的应用程序进行压力测试,并测量会话膨胀。

这是我们在应用程序本身中计算会话大小的方法:

totalSize = 0;
totalSerializable = 0;
totalNumber = 0;

HttpSession session = getSession();
Enumeration<String> attrs = session.getAttributeNames();
while (attrs.hasMoreElements()) {
    String attr = attrs.nextElement();
    SessionObject sObj = new SessionObject(attr, session.getAttribute(attr));
    sessionAttributes.add(sObj);
    if (sObj.isSerializable()) {
        totalSize += sObj.getSize();
        totalSerializable++;
    }
    totalNumber++;
}
totalSize=0;
totalSerializable=0;
总数=0;
HttpSession session=getSession();
枚举attrs=session.getAttributeNames();
while(attrs.hasMoreElements()){
字符串attr=attrs.nextElement();
SessionObject sObj=新的SessionObject(attr,session.getAttribute(attr));
增列(sObj);
if(sObj.isSerializable()){
totalSize+=sObj.getSize();
totalSerializable++;
}
totalNumber++;
}

这是不准确的,因为它只测量会话对象的序列化表示的大小,而不是会话对象的实际内存占用,而且它还跳过不可序列化的对象。