我想减少Java应用程序的内存占用,以减少交换。为此,我一直在考虑减少堆栈大小(Xss参数),但不确定堆栈内存是如何分配的,也不确定每个线程的默认512k (对于32位操作系统)是否始终位于常驻内存中,而不管它实际使用了多少。
堆栈内存的减少会导致交换的减少吗?
更新:请不要建议分析应用程序-它已经完成了。
发布于 2012-04-07 08:13:04
你在运行多少个线程?即使有大量的线程和非常大的堆栈大小(比如10k线程和256KB的堆栈大小),也只有2 2GB的堆空间。
您说您正在32位JVM上运行,所以我认为这是一个相对较小的系统。您有几个选项:
。
发布于 2012-04-07 07:59:19
是的,当然它的后进先出规则是后进先出,少堆少交换
发布于 2012-04-07 08:10:45
您使用了多少内存,需要节省多少内存?
由于堆栈每个线程只有512K,这意味着您需要200个线程才能开始输入一个可能值得保存的值(100Mb)
由于堆栈内存的使用是“非常频繁的”,我认为它不是一个很好的交换目标。除非您正在处理内存受限的环境?
https://stackoverflow.com/questions/10050377
复制相似问题