1. Marian Klco
  2. PowerBuilder
  3. Friday, 1 June 2018 15:10 PM UTC

Hi,

We are challenging problem with high consumption of windows user objects by datawindow.  Windows are limiting processes to 10.000 user objects, it is quite simple to reach this limit in big MDI applications which are using many datawindows. Once application hit 10.000 user objects (that is approximately 100 mid size open datawindows), than it become uncontrollable and start causing windows instability. Windows will stop rendering application and also whole desktop will start having problems with rendering. We addressed this issue by monitoring consumed user objects and restrict user to open more windows in application. This is quite limiting, I can see that other applications showing similar amount of data are consuming significantly less user objects. Wouldn't be possible to optimize datawindow rendering to consume less user objects to prevent such situation?

https://blogs.technet.microsoft.com/markrussinovich/2010/02/24/pushing-the-limits-of-windows-user-and-gdi-objects-part-1/

Regards,

 Marian.

Miguel Leeuwe Accepted Answer Pending Moderation
  1. Tuesday, 5 June 2018 12:58 PM UTC
  2. PowerBuilder
  3. # 1

FYI,

We have one window in which someone put 20+ u_dw controls and some other controls. On opening this window and doing anything, powerbuilder would hang / crash (especially when trying to save). The "normal" way of doing things would have been to place those datawindow controls on a/several userobjects or use only a few controls and assign datastore content to it, but ...

The only way I was able to work with the window, was by taking out all of the dataobject assignments in the properties and assign those in the constructor events.

Maybe nothing to do with the problem here, except for "reaching to the limits" of used dw controls on a window.

 

Comment
  1. Miguel Leeuwe
  2. Tuesday, 5 June 2018 12:59 PM UTC
(to be clear: the "hang / crash" would be when editing the window, not when running it).

  1. Helpful
  1. Miguel Leeuwe
  2. Tuesday, 5 June 2018 12:59 PM UTC
(to be clear: the "hang / crash" would be when editing the window, not when running it).

  1. Helpful
  1. Marian Klco
  2. Wednesday, 6 June 2018 15:29 PM UTC
Hi Miguel,



I believe this is not related, performance issues will be more likely caused by design or programming of that window. In our case, we do not have any performance problems, even with very complex multitab windows with 20+ datawindows. They are retrieving/editing/updating very quickly. Each datawindow using u_dw similar to pfc. Problem is only with consumed windows resources.



Cheers,



 Marian

  1. Helpful
There are no comments made yet.
David Peace (Powersoft) Accepted Answer Pending Moderation
  1. Monday, 4 June 2018 12:48 PM UTC
  2. PowerBuilder
  3. # 2

Hi

We have large multi tab applications but have not experienced the problems that you are experiencing. Mu gut is telling me that it is more likely a coding issue somewhere that is using resources and not releasing them. PB is generally very well behaved  and only consumes resources because of your own code and not due to PB itself.

When ever we have been involved in diagnosing these sorts of issues we have found issues in the code that we can fix and cut the problems down. I suggest you look at you code and make sure objects that are being created are properly destroyed and garbage collection is run.

Cheers

David

Comment
  1. Chris Pollach @Appeon
  2. Monday, 18 June 2018 15:09 PM UTC
Hi David;



  That why PowerSoft (yes, the original PB vendor) created the Tab Control with the "CreateOnDemand" option.



Just for these kind of resource issues.  



Regards ... Chris

  1. Helpful
  1. David Peace (Powersoft)
  2. Monday, 18 June 2018 16:14 PM UTC
Ahh Powersoft.... how we miss them :)

  1. Helpful
  1. David Peace (Powersoft)
  2. Monday, 18 June 2018 16:19 PM UTC
Sadly the designer of the inherited code did not think about the resources being consumed. It would require some quite cleaver thinking to retro fit inheritance that was intelligent enough to only create the objects on demand. Sadly as we do not have a full understanding of your application it's not possible to suggest anything more useful. You obviously have a good handle on the application so I suspect you know in your heart what is required, but its a lot of work....



Good luck.

  1. Helpful
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Friday, 1 June 2018 17:32 PM UTC
  2. PowerBuilder
  3. # 3

Hi Marian;

   If your App has a lot of DataStores .... have you tries this:

Create a PB.INI file in the same folder as your App (or its .EXE).

  1. Add the following section & entry to your PB.INI file, as follows:
  • [DataStore Behavior]
  • UseHwnd=no

HTH

Regards ... Chris

Comment
  1. Marian Klco
  2. Friday, 1 June 2018 21:50 PM UTC
Hi Chris,



Thanks for tweak, but we are not using much datastores in our app. It did not help in our case. We have classic MDI app with many complex multitab windows, where each tab have datawindow. Users can open only around 8 of this windows simultaneously before they hit user object limit. If they are opening simple windows with 1 to 4 datawindows, than it is no problem to open 100 of them. My wonder is if datawindow rendering method do not have somewhere forgotten release of user objects after rendering is done.



 



Regards, Marian

  1. Helpful
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.