Java减少堆栈大小以节省内存

Art*_*tch 0 java memory performance jvm

我想减少Java应用程序的内存占用,以减少交换.为此我一直在考虑减少堆栈大小(Xss参数),但不确定如何分配堆栈内存以及每个线程的默认512k(对于32位操作系统)是否始终位于驻留内存中,无论其多少实际使用过.

减少堆栈内存会导致交换减少吗?

更新:请不要建议配置应用程序 - 它已经完成.

Ste*_*ker 5

你运行了多少个线程?即使有大量的线程和非常大的堆栈大小(比如,10k线程和256KB堆栈大小),只有2GB的堆空间.

你说你在32位JVM上运行,所以我认为这是一个相对较小的系统.你有几个选择:

  • 切换到64位JVM.现在你有大量的地址空间,堆栈大小应该是无关紧要的

  • 你的机器太小了.如果2kb的堆栈对于你的10k +线程来说是一个问题,你就会在太小的机器上运行太大的应用程序了.少做软件或购买更多硬件

  • 减少你的线程数

  • 问题实际上是在其他地方,你正在咆哮错误的树