读书人

关于非堆内存一直上涨的有关问题

发布时间: 2011-11-22 23:46:19 作者: rapoo

关于非堆内存一直上涨的问题
系统的非堆内存是否会一直上涨?只要运行程序进行操作就会上涨,并且在不进行操作时也不下降吗?
我在网上看到一些资料,非堆内存分为code cache和perm Gen,主要是这个perm Gen会不停上涨,设置了permSize和MaxpermSize都没有,现在的permSize是256M,MaxpermSize是640M,可是非堆内存上涨到640M后依然会当掉。
到底是什么原因,请高手解答一下。
网上有些参考说:“Permanent Generation会一直存在”
(引用http://hi.baidu.com/wy521ly/blog/item/a004c4d8f77ede3033fa1c30.html)
并且“不管怎样,永久代还是会逐渐变满,所以隔三差五重起java服务器是必要的,我每天都自动重起。”
(引用http://www.douban.com/group/topic/7095051/)
是不是按照网上所说,这个东西无法解决,只能靠经常重启服务器解决?

[解决办法]
Linux 服务器不存在这个问题,也是由于这个原因windows类的服务器需要从启动,我们的linux服务器1~3年从启动一次。
[解决办法]
perm gen存放类和类元数据信息。通常上涨的情况是在你的web容器reload应用时发生,这也是由于不恰当的使用代码导致class reload时未能释放原有的class造成的。
[解决办法]
我说的reload不是服务器重启,是服务器下的单个应用的重启。
[解决办法]
比如tomcat里的某个应用,你重新上传了某个class文件,会导致tomcat重新装载这个应用。
[解决办法]
是不是jsp文件太多了?
[解决办法]
你用到的类文件有这么多么?

这种应该是你设计上考虑不周造成的,应该优化你的设计。

特别注意JSP文件的多少!
[解决办法]
开发中的系统部署时出现,还是完成的系统部署后出现的
[解决办法]
等待牛人解答,,,,,,
[解决办法]
是不是jsp文件太多了?
[解决办法]
正在学习这方面的知识,看看
[解决办法]
即使光进行一个模块的功能操作,重复进行也会使permGen升高,应该不是jsp多的问题
[解决办法]
用WebLogic基本不会有这种问题
[解决办法]
顶。。。。。。。。。。。
[解决办法]
顶。。。。。。。。。。。。。。。。。。。
[解决办法]
怎么不能回复该帖啊!!!!!????
[解决办法]

[解决办法]
很好 ,赞一个 谢谢!
[解决办法]
很好 ,赞一个 谢谢!
[解决办法]

[解决办法]
jiefenxuexile
[解决办法]
顶。。。。。。。。。。。。。。。。。。。
[解决办法]
谁知道呢,呵呵,可能有问题
[解决办法]
顶!!!!!!!!!!!!!!!!!!
[解决办法]
DING !!!!!!!!!!!!
[解决办法]
顶一下,学习中......
[解决办法]
经验值得学习,谢谢。。。学习一下就溜
[解决办法]
经验值得学习,谢谢。。。学习一下就溜
------解决方案--------------------


用JConsole或者Jprofider看看.
可以远程连接jvm的.
看看都是什么对象
[解决办法]
谢谢哦,学习了,再次感谢!!!!!!!!
[解决办法]
顶一下,正在学习中.........
[解决办法]
mark mark mark mark mark mark mark mark mark mark mark mark mark mark mark mark mark mark
[解决办法]
HAHA ,HUI FU!
[解决办法]
jie fen 回复内容太短了!

[解决办法]
.........................................
[解决办法]
帮顶下,也请各位看看我的问题
http://topic.csdn.net/u/20100228/11/22bff616-b098-42ac-b397-eea52d03ddc2.html
谢谢!
[解决办法]
)写一个Java函数最高效的实现字符串倒序(不能直接使用类库API)。
[解决办法]
来看下!!!!!!!!!!!!!!!!!
[解决办法]
因为Windows底层内置了缓存文件管理器。所以程序中有读写文件的操作时,就自动地被OS缓存到System Cache中(Linux好像没这么手欠)。而且微软提供的某些比较底层的C函数内部有bug,会导致System Cache无限增长最终挤占掉全部可用内存。有些C\C++程序员或者间接地---某些创新的Java代码,可能使用了这样的有bug函数,所以用户机器上的某个这样的程序可能是含bug的,是有害的。Vista和Server上都可以使用一个Set System Cache的函数,来设置系统缓存的上限、下限。但是这个函数无法在Windows XP中使用。另外,需要说明的是,一般情况下System Cache是自我管理的,增长到一定程度就停止继续增长了。新的缓存内容会自动替换掉最早进入、又最少使用的缓存内容。而bug版的应用程序会干脆破坏掉System Cache的完善管理机制。
[解决办法]
所以思路应该是查找有问题的应用程序。因为正常的系统缓存是一边进、一边删的,非堆内存中在正常情况下不会允许只进不删的情况。

读书人网 >Java Web开发

热点推荐