Idea CPU 700% - Jmix plugin

InteliJ IDEA is using very high CPU. After profiling and contacting Jetbrains support the main cause is Jmix plugin… :face_with_raised_eyebrow:

image

Hello, is this a permanent state of CPU usage while working in Jmix Studio, or is it observed at certain moments, such as project indexing after starting the IDE? Could you also tell me your CPU model and share profiling results?

It is constantly high, even after finished indexing.
After closing Jmix project, CPU drops. Reopening project = CPU again goes up 300 - 700%.
Do you want CPU profiling file from IDEA?

MacBook Pro 2019, 2,4 GHz 8-Core Intel Core i9

Thnak you.

Yes, as well as the threadDumps files if you’re experiencing an IDE hang.

image

After opening any Jmix project (just opening the project in IDEA), the whole Macbook is killed… CPU up to 700%.
The problem is Falcon.
Unfortunately it cannot be stopped or disabled, it is a company policy enforced antivirus…

I guess it scans realtime everything a and together with JMix in IDEA it uses up all CPU and IO resources.
It really sucks.

Could you resolve it with Falcon?
Thank you.
@t.musin

@tomas.klems
Did you try to report the issue to them?

If your company has centralized antivirus/security policy distribution, ask your IT to create a rule to exclude IntelliJ and its subprocesses from certain types of scans. If not, maybe a person with admin privileges can do it on your laptop.

This situation is not uncommon, many years ago I had to do something like this with Mcafee Orchestrator, luckily I was in charge of that so I did not have to ask anyone :slight_smile:

Kind regards,
Mladen

It is reported to Jetbrains already.
I will report it to Falcon too.

UPDATE: It does not happen, when Power Saving mode is ON.

UPDATE:

  1. my employer - NO REPLY
  2. Falcon - NO REPLY
  3. JetBarins replied:

Looks like com.haulmont.jmixstudio.intellij.account.service.AccountServiceImpl.isLoggedInOrHasSubscription() calling some crypto-related methods from sun.security package causing high CPU usage

You can add this information to your support ticket to increase chances that it will be escalated
Possible workaround: try increasing reserved code cache size by adding -XX:ReservedCodeCacheSize=1024m under Help | Edit Custom VM Options and restart the IDE

Best regards,
Egor Klepikov
Support Engineer at JetBrains

image

@krivopustov @mbucan @t.musin Thank you!

Thanks for the update.
In the mentioned method, Studio decrypts the license information with a public key using a standard procedure. It’s not clear why it causes high CPU usage in your case. Perhaps you could mention it too in your Falcon support ticket. Also, we’ll think what we can do from our side.

I also experience Plugin crashes. All reported automatically to JetBrains.
Example:

java.lang.RuntimeException: Cannot find service software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager (classloader=PluginClassLoader(plugin=PluginDescriptor(name=AWS Toolkit - Amazon Q, CodeWhisperer, and more, id=aws.toolkit, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/IntelliJIdea2023.3/plugins/aws-toolkit-jetbrains, version=2.5-233, package=null, isBundled=false), packagePrefix=null, state=unload in progress), client=null)
	at software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager$Companion.getInstance(CodeWhispererExplorerActionManager.kt:218)
	at software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManagerKt.isCodeWhispererEnabled(CodeWhispererExplorerActionManager.kt:203)
	at software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorListener$editorCreated$1$1$1.documentChanged(CodeWhispererEditorListener.kt:30)
	at com.intellij.openapi.editor.impl.DocumentImpl.lambda$changedUpdate$1(DocumentImpl.java:913)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeNonCancelableSection$2(CoreProgressManager.java:228)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:685)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:641)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$computeInNonCancelableSection$3(CoreProgressManager.java:236)
	at com.intellij.openapi.progress.Cancellation.computeInNonCancelableSection(Cancellation.java:57)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeInNonCancelableSection(CoreProgressManager.java:236)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:227)
	at com.intellij.openapi.editor.impl.DocumentImpl.changedUpdate(DocumentImpl.java:910)
	at com.intellij.openapi.editor.impl.DocumentImpl.updateText(DocumentImpl.java:814)
	at com.intellij.openapi.editor.impl.DocumentImpl.insertString(DocumentImpl.java:545)
	at com.intellij.codeInsight.template.impl.TemplateState.lambda$processAllExpressions$1(TemplateState.java:355)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:975)
	at com.intellij.codeInsight.template.impl.TemplateState.performWrite(TemplateState.java:424)
	at com.intellij.codeInsight.template.impl.TemplateState.processAllExpressions(TemplateState.java:399)
	at com.intellij.codeInsight.template.impl.TemplateState.start(TemplateState.java:339)
	at com.intellij.codeInsight.template.impl.TemplateState.start(TemplateState.java:301)
	at com.intellij.codeInsight.template.impl.TemplateManagerImpl.lambda$startTemplate$1(TemplateManagerImpl.java:163)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:216)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:177)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:167)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:153)
	at com.intellij.codeInsight.template.impl.TemplateManagerImpl.startTemplate(TemplateManagerImpl.java:166)
	at com.intellij.codeInsight.template.impl.TemplateManagerImpl.startTemplate(TemplateManagerImpl.java:184)
	at com.intellij.codeInsight.template.impl.TemplateManagerImpl.startTemplate(TemplateManagerImpl.java:123)
	at com.haulmont.jmixstudio.intellij.action.handler.JavaGenerateHandlerActionHandler.lambda$generate$0(JavaGenerateHandlerActionHandler.java:102)
	at com.intellij.openapi.command.WriteCommandAction.lambda$runWriteCommandAction$4(WriteCommandAction.java:338)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$1(WriteCommandAction.java:144)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:975)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.lambda$doRunWriteCommandAction$2(WriteCommandAction.java:142)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:225)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:187)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.doRunWriteCommandAction(WriteCommandAction.java:151)
	at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:118)
	at com.intellij.openapi.command.WriteCommandAction.runWriteCommandAction(WriteCommandAction.java:338)
	at com.haulmont.jmixstudio.intellij.action.handler.JavaGenerateHandlerActionHandler.generate(JavaGenerateHandlerActionHandler.java:97)
	at com.haulmont.jmixstudio.intellij.action.handler.JavaGenerateHandlerActionHandler.invoke(JavaGenerateHandlerActionHandler.java:66)
	at com.haulmont.jmixstudio.intellij.ui.sd.ScreenControllerNotificationProvider$GenerateHandlerActionInfo.onClickNotificationBtn(ScreenControllerNotificationProvider.java:178)
	at com.haulmont.jmixstudio.intellij.ui.CubaEditorNotificationPanel$1.actionPerformed(CubaEditorNotificationPanel.java:103)
	at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:227)
	at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$2(ActionButton.java:206)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareWithCallbacks(ActionUtil.java:381)
	at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:206)
	at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:524)
	at java.desktop/java.awt.Component.processEvent(Component.java:6422)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4969)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4583)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4524)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2809)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4855)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:794)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:733)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:766)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:764)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:763)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:695)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:635)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$10(IdeEventQueue.kt:580)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithEnabledImplicitRead(RwLockHolder.kt:75)
	at com.intellij.openapi.application.impl.RwLockHolder.runWithImplicitRead(RwLockHolder.kt:67)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:580)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:848)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)