首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

jprofiler查看webapp内存储器遇到的怪异现象

2012-10-28 
jprofiler查看webapp内存遇到的怪异现象用jprofiler查看我的web项目看到这样一幅图,此图是在应用刚刚启动

jprofiler查看webapp内存遇到的怪异现象
用jprofiler查看我的web项目
看到这样一幅图,此图是在应用刚刚启动时截取的
让人不解的是:为什么刚启动完spring中居然有10多个实例
看前几行:
SiteDynamicManager$$EnhancerByCGlib  23
SiteDynamicManager$$FastClassByCGlib  19
....

http://xuliangyong.iteye.com/upload/attachment/130623/bff9e8ed-9539-30d4-aaee-593de817fdd3.png

而其他的Dao对象则正常 只存在一个实例

难道是使用@Transctional的原因?

再来一张
这张图也十分的有趣,都是MessageManager类衍生出来的
MessageManager的代码见附录1
spring中配置也只有一行


http://xuliangyong.iteye.com/upload/attachment/130637/a6fd217b-96a9-3f25-8c0e-df91b99129ff.png


附录
public class MessageManager {private MessageDao messageDao;private UserDao userDao;@Transactionalpublic void send(Message msg) throws UserNotExistException{User receiver = userDao.findByNickname(msg.getReceiverName());if(receiver == null&&msg.getReceiver()!=null){receiver = userDao.get(msg.getReceiver().getId());}if(receiver == null){throw new UserNotExistException();}msg.setReceiver(receiver);messageDao.save(msg);}@Transactionalpublic void save(Message msg){this.messageDao.save(msg);}/** * 发件箱 */@Transactional(readOnly=true)public Iterator<Message> findSentMessage(Integer id, int maxResults){return messageDao.findSentMessage(id, maxResults);}/** * 发件箱,分页显示 */@Transactional(readOnly=true)public Page<Message> findSentMessage(int pageNo, int pageSize){return messageDao.findSentMessage(pageNo, pageSize);}/** * 收件箱 */@Transactional(readOnly=true)public Page<Message>  inbox(int pageNo, int pageSize){return messageDao.findReceivedMessage(pageNo, pageSize);}/** * 查看邮件。收件人 * @param id * @return */@Transactionalpublic Message view(Integer id){Message message = messageDao.load(id);boolean isViewMyself = SecurityContextHolder.getId().equals(message.getSender().getId()); //自己查看自己的邮件boolean isSendToMyself = message.getReceiver().getId() == message.getSender().getId(); //自己发给自己的邮件if(isSendToMyself || !isViewMyself ){if( !message.isRead() ){message.setRead(true);save(message);}}return message;}/** * 删除收件箱邮件 * @param id */@Transactionalpublic void inboxDelete(Integer id){Message msg = messageDao.get(id);if(msg.getReceiver().getId().intValue() == SecurityContextHolder.getId().intValue()){msg.setReceiverDelete(true);messageDao.save(msg);}}/** * 批量删除收件箱邮件 */@Transactionalpublic void inboxBatchDel(List<Integer> listId){for(Integer id:listId){Message msg = messageDao.get(id);if(msg.getReceiver().getId().intValue() == SecurityContextHolder.getId().intValue()){msg.setReceiverDelete(true) ;messageDao.save(msg);}}}/** * 删除发件箱邮件 * @param id  邮件id */@Transactionalpublic void outboxDelete(Integer id){Message msg = messageDao.get(id);if(msg.getSender().getId().intValue() == SecurityContextHolder.getId().intValue()){msg.setSenderDelete(true);messageDao.save(msg);}}/** * 批量删除发件箱邮件 */@Transactionalpublic void outboxBatchDel(List<Integer> listId){for(Integer id:listId){Message msg = messageDao.get(id);if(msg.getSender().getId().intValue() == SecurityContextHolder.getId().intValue()){msg.setSenderDelete(true);messageDao.save(msg);}}}/** * 获取未读邮件数 */@Transactional(readOnly=true)public long countUnreadMessage(Integer userId){return messageDao.findUnreadMessage(userId);}public Message get(Integer id){return messageDao.get(id);}public void setMessageDao(MessageDao messageDao) {this.messageDao = messageDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}}
1 楼 east_java 2010-11-21   这什么原因呢

热点排行