Determining RAM size using Java

Hi,
Apologies in advance if this seems to be an oft-repeated topic. I just wanted to confirm if I am missing something or not.
I am trying to find the total amount of RAM available to the OS and am using the java management API to do it (I am using JDK 1.6 update 7):
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class Mem{
     public static void main(String[] args){
          OperatingSystemMXBean osb = (com.sun.management.OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean();
          System.out.println(osb.getTotalPhysicalMemorySize());
}This code seems to return the correct value of total RAM on Linux. On Windows, however, I get some random value. I believe it could be because of this bug: [http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=132bbb6b3cbd535627637e96a07c?bug_id=6628662|http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=132bbb6b3cbd535627637e96a07c?bug_id=6628662] So I doubt I can use this approach on Windows.
An alternate way would be to call OS specific commands from within Java, parse the results I receive and use them. I would like to keep that as the last resort. I want to avoid JNI too.
My question is, is there any other way to retrieve the information? Are there lightweight third-party tools which can be integrated into my java code?
Any input will be greatly appreciated.
Thank you!

I need this info for a "setup" program which allows the end-user to choose how much max heap memory they want to allocate for their application. I don't want to display values which are beyond what is physically available in the system.Ok. IMHO this is not a great use of your time. First of all, total RAM is not nearly as important as total RAM - memory manager - OS. Second of all, system memory is more than just RAM. Virtual memory allows you to have much more in memory than your RAM.
IMHO you should leave this to the user to performance tune their own machine.

Similar Messages

  • To check RAM size via java program

    Hi,
    Please let me know how to find the RAM size of a machine using java program.
    Thanks & Regards,
    Nasrin.N

    Hi,
    I've done that for disk space with JNative, take a look at http://sourceforge.net/project/screenshots.php?group_id=156421
    I think it's easy to implement it for RAM.
    --Marc (http://jnative.sf.net)                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Problem with too small page size using Java 2D Printing API.

    Hello,
    I have problem with resolution of printer using Java 2D Printing API. Despite my printer has 600 x 600 DPI, inside java.awt.print.Printable.print(Graphics, PageFormat, int) I receive page format with 600 x 840 page size.
    I have tried to set resolution using javax.print.attribute.PrintRequestAttributeSetand javax.print.attribute.standard.PrinterResolution, but with no result.
    Can anybody solve this problem?
    Regards,
    Karl.

    600 x 840 is a Point value; Point is defined as 1/72nd of an inch. Printers do have much higher DPI than this, but I believe that this DPI has to do with richness of the printed image, not an actual ability to color with that level of resolution. You might want to try calling zoom on your Graphics2D object. Otherwise, I don't know what else you can try.

  • Problem increasing heap size using Java Control Panel

    I am running a web-based bioinformatics package which uses a Java applet as the client application. It mostly works fine, but some large clustering processes don't complete, they just cycle endlessly. The user manual advises increasing heap space "by entering the following command in the Java Control Panel or Java Plug-in dialog: -Xms128M -Xmx256M." I can open the Java Control Panel OK and enter the necessary command in the Java Runtime Parameters box, but after clicking OK then Apply, the Runtime Parameters box is empty again and there is no increase in the heap size allocation. In other words, the change doesn't take effect.
    I have already tried: adjusting one parameter at a time (max heap size first, then min); changing uppercase to lowercase M (-Xmx256m); restarting the browser after the change; rebooting my PC - none of these has helped.
    Technical details: it's Java 6 standard edition, build 1.6.0_10-rc-b28; browser is Internet Explorer 7; operating system is Vista (Service Pack 1); PC is a 2.4 GHz processor with 2 GB RAM (so I have plenty available to allocate to Java). I have local admin privilege on my PC.
    Help would be much appreciated, as I really need to complete these cluster analyses. I'm a biologist not a developer, so ideally I need a solution that doesn't involve major programming, though I'm OK with registry edits and use of the command line. Thanks in advance.

    The failure to retain the parameters is a bug, per hdong in this [Java,net thread|http://forums.java.net/jive/thread.jspa?threadID=44540&tstart=0] dated August 14
    "I did a little more research and found out that the problem is only with "-rc" or "-beta" versions of plugin. When 1.6.0_10 is finally released, the version string will be "1.6.0_10". Plugin works fine to set/get jvm parameters when version string is "1.6.0_10".
    I am surprised that this issue was not discovered earlier. It was probably because the internal test binary use "1.6.0_10" as version string.
    Yeah, it is a bug that will affect many manny developers. It will be fixed as soon as possible."

  • File size (using java.io.File)

    Hello all,
    When I want to create an app to be used as file browser, I should like to know the size of a file in a directory. The java.io.File class gives me quite some functionality, but not the functionality to display the file size.
    Does anyone know of a default class that has the functionality to display the file size?
    When no such class exists, I should need to develop it myself. From the top of my head it should be something like this:
    int size = 0;
    int aChar = 0;
    FileReader reader = new FileReader (theFile);
    while (reader.ready() )
        aChar = reader.read()
        size++;
    }The variable size gives me now the number of characters in a file. But this should be done for each file in a particular directory. But does that not ask much CPU performance? Does anyone have an alternative?
    Looking forward to your answer
    Michel

    Hi, I'm having the exact same problem, except that I'm doing a fax system so I can't copy a file while the file is still open. So to check to see if the file is open I have to check the file size in bytes then wait a second and check the file size again. If the file sizes differ then I have to check the next file otherwise I can copy the file. I had a look at the length() method but that will only return the actual length of the file name, not the size of the contents of the file which I need, can anyone please help? Say the file name is 16 ad an a or anything to the file name, if you the call the length() method again it will return 17.

  • Determining password expiry using java + ADLDS

    If authentication fails, I have to determine that password has expired.
    I can not use 'pwdLastSet' attribute because password policy depends on domain server.
    I have to check the attribute 'msDS-UserPasswordExpired' whether it is true or false.
    But I am not able to do it since it is constructed attribute.
    I have seen it is done in .NET using 'RefreshCache' method.
    How it can be done in Java?
    Please note this is a repetition of an earlier thread as it was not answered

    You may alter your profile beforehand:
    ALTER PROFILE XYZ LIMIT PASSWORD_REUSE_MAX UNLIMITED

  • How to change the font size of the string by using java?

    I wish to change the font size of the text, read from a text file by using java. Please send me the sample codes. By using ActiveX component for word we can do it. Please give me any other solution to suit the platform independ. Thanks in advance.
    thanks,
    Karthik.

    Text is displayed in some kind of text component - JTextField, JTextArea, JTextPane....To change the font of the text you change the font associated with the text component:
    textComponent.setFont( .... );

  • How to increase heap size in java code, not using "java -Xms64m "

    Im writing a java programme for loading the german dictionary. my dictionary is very huge(around 300000+ words).
    while loading the dictioanry im getting error "OutOfMemoryError" .
    I found one solution to increase the heap size, but i want to increase the heap size in java programmer itself, not outside jar file. so i could not use "-Xms64m" option of jvm.
    Can anyone tell me how can i do this

    sunlover1984 wrote:
    Im writing a java programme for loading the german dictionary. my dictionary is very huge(around 300000+ words).
    while loading the dictioanry im getting error "OutOfMemoryError" .
    I found one solution to increase the heap size, but i want to increase the heap size in java programmer itself, not outside jar file. so i could not use "-Xms64m" option of jvm.
    Can anyone tell me how can i do thisThat option is a startup option for the JVM. That means if your jar is already loaded then you are already too late to try and call it.

  • How to determine the presence of adobe pdf reader using java/J2EE?

    Can someone share this with me. I need to determing how do we determine if adobe reader is installed on a user's machine or not - using java/J2EE.
    Any ideas?
    Thanks,
    Pratik.

    I am in the software, where can I find it?
    On Tue, Jan 27, 2015 at 9:59 AM, Sara.Forsberg <[email protected]>

  • 4gb file size limitation using java.io.* package in java stored procedure

    Does anyone know about file size limitations when using java.io.* package inside java stored procedures. I have some java stored procedures that read and write to files. They error out when run as a java stored procedure within oracle on files over 4gb. I have no problems with these procedures when I test them outside of oracle.

    I am using 10g Release 10.2.0.1.0, the java version returned by the Oracle JVM is 1.4.2_04
    When I tested it outside of oracle I ran it using the java run time in ORACLE_HOME\jdk\bin and it works perfectly on files larger than 4gb.
    Thank you for the UTL_FILE suggestion. I have considered using that but there is one method in Java that I can't seem to find a corresponding procedure for in PL/SQL.
    RandomAccessFile.setLength()
    This allows me to truncate a file. I have a need to strip bytes off the end of a file without creating a copy because I am working with large files and disk space may be limited. It is also much slower to read from the original file and writing the same bytes to a new file (minus the trailing bytes).
    If anybody has any insight about the 4gb java.io limitation in Oracle JVM or has a workaround in PL/SQL for the RandomAccessFile.setLength() method in Java, I would really appreciate the help.
    Thanks,
    Thach

  • How Can I Determine the Size of the 'My Documents' Folder for every user on a local machine using VBScript?

    Hello,
    I am at my wits end into this. Either I am doing it the wrong way or it is not possible.
    Let me explain. I need a vb script for the following scenario:
    1. The script is to run on multiple Windows 7 machines (32-Bit & 64-Bit alike).
    2. These are shared workstation i.e. different users login to these machines from time to time.
    3. The objective of this script is to traverse through each User Profile folder and get the size of the 'My Documents' folder within each User Profile folder. This information is to be written to a
    .CSV file located at C:\Temp directory on the machine.
    4. This script would be pushed to all workstations from SCCM. It would be configured to execute with
    System Rights
    I tried the script detailed at:
    http://blogs.technet.com/b/heyscriptingguy/archive/2005/03/31/how-can-i-determine-the-size-of-the-my-documents-folder.aspx 
    Const MY_DOCUMENTS = &H5&
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(MY_DOCUMENTS)
    Set objFolderItem = objFolder.Self
    strPath = objFolderItem.Path
    Set objFolder = objFSO.GetFolder(strPath)
    Wscript.Echo objFolder.Size
    The Wscript.Echo objFolder.Size command in the script at the above mentioned link returned the value as
    '0' (zero) for the current logged on user. Although the actual size was like 30 MB or so.
    I then tried the script at:
    http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_27869829.html
    This script returns the correct value but only for the current logged-on user.
    Const blnShowErrors = False
    ' Set up filesystem object for usage
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("WScript.Shell")
    ' Display desired folder sizes
    Wscript.Echo "MyDocuments : " & FormatSize(FindFiles(objFSO.GetFolder(objShell.SpecialFolders("MyDocuments"))))
    ' Recursively tally the size of all files under a folder
    ' Protect against folders or files that are not accessible
    Function FindFiles(objFolder)
    On Error Resume Next
    ' List files
    For Each objFile In objFolder.Files
    On Error Resume Next
    If Err.Number <> 0 Then ShowError "FindFiles:01", objFolder.Path
    On Error Resume Next
    FindFiles = FindFiles + objFile.Size
    If Err.Number <> 0 Then ShowError "FindFiles:02", objFile.Path
    Next
    If Err.Number = 0 Then
    ' Recursively drill down into subfolder
    For Each objSubFolder In objFolder.SubFolders
    On Error Resume Next
    If Err.Number <> 0 Then ShowError "FindFiles:04", objFolder.Path
    FindFiles = FindFiles + FindFiles(objSubFolder)
    If Err.Number <> 0 Then ShowError "FindFiles:05", objSubFolder.Path
    Next
    Else
    ShowError "FindFiles:03", objFolder.Path
    End If
    End Function
    ' Function to format a number into typical size scales
    Function FormatSize(iSize)
    aLabel = Array("bytes", "KB", "MB", "GB", "TB")
    For i = 0 to 4
    If iSize > 1024 Then iSize = iSize / 1024 Else Exit For End If
    Next
    FormatSize = Round(iSize, 2) & " " & aLabel(i)
    End Function
    Sub ShowError(strLocation, strMessage)
    If blnShowErrors Then
    WScript.StdErr.WriteLine "==> ERROR at [" & strLocation & "]"
    WScript.StdErr.WriteLine " Number:[" & Err.Number & "], Source:[" & Err.Source & "], Desc:[" & Err.Description & "]"
    WScript.StdErr.WriteLine " " & strMessage
    Err.Clear
    End If
    End Sub
    The only part pending, is to achieve this for the 'My Documents' folder within each User Profile folder.
    Is this possible?
    Please help.

    Here are a bunch of scripts to get folder size under all circumstances.  Take your pick.
    https://gallery.technet.microsoft.com/scriptcenter/site/search?query=get%20folder%20size&f%5B0%5D.Value=get%20folder%20size&f%5B0%5D.Type=SearchText&ac=2
    ¯\_(ツ)_/¯

  • How do you reference a Formular Object on a Crystal Report using Java

    Hi all,
    I am trying to reference an object on my report which contains a Formula field.
    I have read the following 2 threads, but they refer to textObjects:
    [How do you reference a textObject on a Crystal report using Java|Re: How do you reference a textObject on a Crystal report using Java?]
    [Changing the text of ITextObject programatically|Re: Changing the text of ITextObject programatically]
    But I cannot even get those to work. I can reference a object which refers to a database field but as soon as I try
    reference a textObject or reportObject I just get a NULL variable.
    Below is the code I am useing
    IReportObject dbField = reportClientDocument.getReportDefController().findObjectByName("BOB1");
    IReportObject textBob = reportClientDocument.getReportDefController().findObjectByName("BOB2");
    "BOB1" is the name of my DB field Object, and "BOB2" can be a Text box or a Formula item and I just get nothing.
    I have just tested it with a FieldHeadingObject and that returns a valid object, so clearly I am going about this the wrong way
    for objects I place on the reports which are not driven by the database items.
    Ultimately what I want to do is reference an object in the Report Footer which will contain the RecordCount of the number of
    records contained in the report, which I am them going to use to determine if the report holds data,
    if it does I will print it, else ignore it and move on the the next report. I am doing this so that I can at an extra filter to split
    a report up into groups and produce a sinlge PDF for each group instead of one massive PDF containing all the groups.
    So if someone has a solution to any of my problems I would be very greatful, and I dont mind being told Im an idiot and should
    rather do it another way, as long as you supply that other way
    Thanks for the help
    Darren
    Edited by: Darren Jackson on Dec 16, 2009 7:29 PM
    Forgot to add am using CR4Ev2 SP3

    Right I have made some headway.
    Firstly, Im an idiot. I was making changes and setting up test fields on my report, but then when running the app, I had it looking at
    the backup report, which would explain why all the new textbox fields were not being found.
    The stupiditity did force me to delve deep and work out a fair bit of how the reports work, so cant complain too much. BUT, I am still
    not able to return values of Formula fields and formulas extra. Could someone tell me if this is even possible. I get retrieve the formula field
    name, and properties but not its value once the report has been populated. Am I wasting my time?
    Well I will continue dismantling my reports till I find the answer, or someone points me in the right direction.
    If any one is interested this is the code I used to drill down to my text boxes:
    IReportObject recCount = reportClientDocument.getReportDefController().findObjectByName("TB1");
    ITextObject obj_RecCount = (ITextObject) recCount;
    System.out.println(obj_RecCount.getName());
    Paragraphs objP = obj_RecCount.getParagraphs();
    for (int i = 0; i < objP.size(); i++){
         ParagraphElements pE = objP.getParagraph(i).getParagraphElements();
         for (int j = 0;j < pE.size(); j++){
              IParagraphTextElement pEE = (ParagraphTextElement) pE.getParagraphElement(j);
              System.out.println(pEE.getText());
    Cheers

  • How to determine the size of an InputStream??

    Hello,
    I need to get the size of an inputstream. In fact, I am working with java.nio.channels and need to tranfer a file from within a Jar to the FileSystem.
    I have created a ReadableByteChannel from the jar resource, and a FileChannel from the FileSystem destination. The problem is that to use the FileChannel .tranferFrom(..) I need the size of the src file. But, ReadableByteChannel has no size() method.
    How can I determine the size of this InputStream??
    advanced Thanx
    here is code:
    private void copyResourcesToFileSystem(){
              try{
                        String name = getFileName(); // gets the name
                        ReadableByteChannel srcChannel =
                             Channels.newChannel(this.getClass().getClassLoader().getResourceAsStream(("dtd/"+name)));
                        File newFile = new File(TempDirCreator.getXmlDir(),name);
                        FileChannel dstChannel = new FileOutputStream(newFile).getChannel();
                        dstChannel.transferFrom(srcChannel, 0, srcChannel.size());  // doesn't work -- there is no ReadableBC.size()
                        // lets close the show
                        srcChannel.close();
                        dstChannel.close();
              }catch(IOException x){x.printStackTrace();}
              catch(Exception ex){ex.printStackTrace();}
         }

    In general the "size of an InputStream" is a meaningless concept. It's possible to have an InputStream that never terminates. So if you can't get a size from whatever you're reading from, you're out of luck.
    I missed where you explained why you need the size. I've never felt the need to know how many bytes would be passing through my code when copying from input to output.

  • Application started using Java Web Start doesn't launch the first time

    I have a Facebook photo uploader application that I plan to distribute using Java Web Start. I'm using Java 6u4 on Windows XP SP2 with 2GB of RAM. I have Java 6u3, Java 6u4 and Java 5 u14 installed and I'm sure the one used is Java 6u4.
    I signed my application and make use of all security settings.
    Here is my JNLP file:
    <?xml version="1.0" encoding="utf-8"?>
    <jnlp spec="1.0+"
         codebase="http://www.antaki.ca/bloom/jars"
         href="http://www.antaki.ca/bloom/Bloom.jnlp">
    <information>
        <title>Bloom</title>
        <vendor>Carl Antaki</vendor>
        <icon kind="splash" href="http://www.antaki.ca/bloom/Bloom.jpg"/>
        <icon href="http://www.antaki.ca/bloom/bloom32.jpg"/>
      <shortcut online="false">
      <desktop/>
      <menu submenu="Bloom"/>
      </shortcut>
    </information>
        <resources>
            <j2se version="1.5+" initial-heap-size="32m" max-heap-size="128m" href="http://java.sun.com/products/autodl/j2se" />
            <property name="sun.java2d.d3d" value="false"/>
            <jar href="http://www.antaki.ca/bloom/jars/Bloom.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/BrowserLauncher2-1_3.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/SmartProgressMonitor.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/facebook.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/forms-1.1.0.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/json_simple.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/swing-worker-1.1.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/glazedlists_java15.jar"/>
            <jar href="http://www.antaki.ca/bloom/jars/swingx-0.9.1.jar"/>   
            <jar href="http://www.antaki.ca/bloom/jars/jhbasic.jar"/>
       </resources>
    <security>
         <all-permissions/>
      </security>
    <application-desc main-class="ca.antaki.www.bloom.gui.Bloom" />
    </jnlp>Here is the link for my application http://antaki.ca/bloom/Bloom.jnlp
    The first time the application is installed using a link on the browser it's downloaded then the certificate dialog is shown, after that I check the checkbox to accept the certificate permanently. The application doesn't load, it only loads the second time although I see it in the task manager. If I don't accept the certificate permanently it does load. This happens on both Firefox 2 and IE 7. I enabled the console and logging but nothing shows up there.That's really a weird problem, I wonder if Java Web Start is a viable deployment option, it does have great capabilities such as autoupdate but still seems to have important bugs.
    Does anyone have any clue about what is going on.
    The problem doesn't occur on Ubuntu 7.10.
    Thanks,
    Carl Antaki

    >
    You were right my XML file was not correct. I still couldn't find a valid JNLP validator. Sun has to provide that.>No they don't (have to supply a validator for their own document type, though it makes sense to do so), but yes they do (provide a tool that validates XML against schemas). Java can validate XML against a DTD or XSD.
    Check these two threads (and chase the links) for more details.
    JNLP xsd schema
    <http://groups.google.com.au/group/comp.lang.java.programmer/browse_thread/thread/c6f65bf1df5f105d/30c6b7e2dc342dc4>
    Validate XML against DTD? XSD OK. SSCCE.
    <http://groups.google.com.au/group/comp.lang.java.programmer/browse_thread/thread/5b997a1edb765b11/e831f3066eb4aa38>
    Look especially for the posts by Piotr Kobzda.
    I had a tool on my site based largely on Piotr's codes, that linked to a valid JNLP DTD and XSD, but unfortunately my site is offline at the moment. Andy assures me that the JNLP 6.0 DTD has been corrected for the developer ..download tutorials of web start, though the online (web site) version may still be invalid.

  • Problem with CORBA application deployed using Java Web Start 1_6_0.

    Java Web Start fans and experts:
    We have been using Java Web Start to deploy the client side of a CORBA-based application since the inception of Java Web Start ... including Java Web Start 1.0 right up through the present.
    With Java Web Start 1_6_0, we see evidence that Web Start is "tinkering with" the IOR that CORBA uses to communicate. In all previous versions of Java Web Start, independent of the JRE which the application uses, the stringified IOR have been the same size regardless of whether the application is deployed locally or via Java Web Start. With Java Web Start 1_6_0, the stringified IOR is much longer than the "real" IOR (again, regardless of the JRE used by the application itself). To me this smells like a bug in Java Web Start 1_6_0. Has anyone else observed this behavior?
    Here are some specifics .... I've run the same client application with various JREs both with and without Java Web Start as the deployment mechanism. The application was compiled and runs against servers that are running JDK 1_5_0_09.
    Here is the summary of my results from a Linux box running various JREs, various versions of Java Web Start, and also running as a non-JWS deployed application. I've listed the length of the stringified IOR in each case.
    JRE 1.5.0 non-JWS client: stringified IOR length = 344
    JRE 1.6.0 non-JWS client: stringified IOR length = 344 ... this, I think, excludes the JRE as the cause of these problems.
    Java WS 1.5.0, JRE 1.5.0 JWS client: stringified IOR length = 344
    Java WS 1.5.0, JRE 1.6.0 JWS client: stringified IOR length = 344
    Java WS 1.6.0, JRE 1.6.0 JWS client: stringified IOR length = 1568
    Java WS 1.6.0, JRE 1.5.0 JWS cleint: stringified IOR length = 1568
    In all cases, the stringified IOR length is determined by the service receiving the message and is always running JRE 1_5_9_09 and is
    always the same 344 characters in length UNLESS it was deployed
    using Java Web Start 1_6_0, in which case it in nearly 5 times as big!
    To me, it sure looks as if there is a problem with Java Web Start 1_6_0 to be adding so much to the stringified IOR. Note: it's hard to tell how different the underlying IOR is in the JWS 1_6_0 case because, unlike most other ORBs, the Sun ORB doesn't have a tool to extract the IOR into a human readable structure. However, I can think of no good reason why the identical application deployed using Java Web Start 1_6_0 should have a stringified IOR length that is different than that of the same application deployed in non-JWS form or should differ from the behavior seen in all previous releases of Java Web Start.
    Any clues or suggestions? Has anyone else observed this behavior?
    Thanks,
    John

    Hi.
    I got a different problem. My Corba application works in JRE 1.6, but doesn't works in JRE 1.5.X. I got an unexpected error and my console shows:
    getSubjectX500Principal NoSuchMethodError: java.lang NoSuchMethodError
    #### Java Web Start Error:
    #### null
    Can you help me?

Maybe you are looking for