From 3e5ba0330dd872f2cd5e538789d6fefc05751fd1 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 18 Nov 2010 22:21:39 +0300 Subject: [PATCH] large heap warning --- .../wm/impl/status/MemoryUsagePanel.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MemoryUsagePanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MemoryUsagePanel.java index 3f1759a977ec..85a0a8aeb1f4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MemoryUsagePanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MemoryUsagePanel.java @@ -16,6 +16,10 @@ package com.intellij.openapi.wm.impl.status; import com.intellij.concurrency.JobScheduler; +import com.intellij.notification.Notification; +import com.intellij.notification.NotificationDisplayType; +import com.intellij.notification.NotificationType; +import com.intellij.notification.Notifications; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.wm.CustomStatusBarWidget; import com.intellij.openapi.wm.StatusBar; @@ -70,7 +74,22 @@ public class MemoryUsagePanel extends JButton implements CustomStatusBarWidget { myFuture = null; } + + private static final int CRITICAL_XMX_THRESHOLD_MB = 700; + private static final int CRITICAL_XMX_THRESHOLD = CRITICAL_XMX_THRESHOLD_MB /*Mb*/ * 1024 /*Kb*/ * 1024 /*Bytes*/; + public void install(@NotNull StatusBar statusBar) { + if (SystemInfo.isWindows && SystemInfo.is32Bit) { + final long maxMem = Runtime.getRuntime().maxMemory(); + if (maxMem > CRITICAL_XMX_THRESHOLD) { + final String text = + "Current maximum heap size is set to " + + (maxMem / 1024 / 1024) + " Mb. " + + "On a 32-bit system this may cause OutOfMemory errors. It is recommended to specify heap size not more than " + + CRITICAL_XMX_THRESHOLD_MB + " Mb"; + Notifications.Bus.notify(new Notification("Memory", "Too Large Heap Size", text, NotificationType.WARNING), NotificationDisplayType.STICKY_BALLOON, null); + } + } } @Nullable