服务器配置:
>物理内存-16Gb
>交换内存-27Gb
>操作系统-Solaris 10
>物理内存免费-598 Mb
>使用交换内存-〜26Gb
> Java版本-Java HotSpot(TM)服务器VM-1.6.0_17-b04
我的任务是减少已用的交换内存:
我有的解决方案
>停止所有Java应用程序,然后等待直到物理内存被充分释放.然后
执行命令“ swapoff -a”(尚未找到此命令的Solaris等效项)…等待,直到使用的交换内存减少到零为止.然后执行命令“ swapon -a”
>增加物理内存
我需要以下几点帮助:
>相当于solaris的交换和交换?
>选项1是否可以清除已用的交换?
太感谢了!!!
解决方法:
首先,Java和swap不能混合使用.如果您的Java应用程序正在交换,那么您注定要失败.很少有东西会像交换的Java进程那样杀死机器. GC和交换只是一场噩梦.
因此,鉴于此,如果您使用Java进程的机器正在交换-该机器太小了.获取更多的内存,或减少机器上的负载(如果可能的话,包括java进程的堆).
您的计算机没有物理内存(600ish Mb),也没有可用的交换空间(1ish Gb),这是计算机过载的另一个指标.
当资源耗尽时,各种各样的事情都可能使Java进程出错.
杀死Java进程将“使它退出交换”,因为该进程不存在,所以不能进行交换.其他所有过程相同. “交换内存”可能不会立即崩溃,但是如果一个进程不存在-它就不能交换(除非使用永久交换共享内存缓冲区,否则该缓冲区会被交换出去,而Java通常不会使用那些.)
我不知道有什么好方法告诉操作系统将特定程序锁定到物理RAM并阻止其被调出.而且,坦率地说,您不想.
无论占用您所有的RAM,您都需要认真考虑减少其占用空间,或将Java进程移出该计算机.您只是在艰难地奔跑,这块石头就再也没有血迹.