Does OutputStream.write() has a memory leak on Linux?

I write a piece of java code to create 500K small files (average 40K each) on CentOS. The original code is like this:
     package MyTest;
     import java.io.*;
     public class SimpleWriter {
public static void main(String[] args) {
  String dir = args[0];
  int fileCount = Integer.parseInt(args[1]);
  String content="@#$% SDBSDGSDF ASGSDFFSAGDHFSDSAWE^@$^HNFSGQW%#@&$%^J#%@#^$#UHRGSDSDNDFE$T#@$UERDFASGWQR!@%!@^$#@YEGEQW%!@%!!GSDHWET!^";
  StringBuilder sb = new StringBuilder();
  int count = 40 * 1024 / content.length();
  int remainder = (40 * 1024) % content.length();
  for (int i=0; i < count; i++)
   sb.append(content);
  if (remainder > 0)
   sb.append(content.substring(0, remainder));
  byte[] buf = sb.toString().getBytes();
  for (int j=0; j < fileCount; j++)
   String path = String.format("%s%sTestFile_%d.txt", dir, File.separator, j);
   try{
    BufferedOutputStream fs = new BufferedOutputStream(new FileOutputStream(path));
    fs.write(buf);
    fs.close();
   catch(FileNotFoundException fe)
    System.out.printf("Hit filenot found exception %s", fe.getMessage());
   catch(IOException ie)
    System.out.printf("Hit IO exception %s", ie.getMessage());
You can run this by issue following command:
  java -jar SimpleWriter.jar my_test_dir 500000
I thought this is a simple code, but then I realize that this code is using up to 14G of memory.  I know that because when I use free -m to check the memory, the free memory kept dropping, until my 15G memory VM only had 70 MB free memory left.  I compiled this using Eclipse, and I compile this against JDK 1.6 and then JDK1.7. The result is  the same.  The funny thing is that, if I comment out fs.write(), just open and close the stream, the memory stabilized at certain point.  Once I put fs.write() back, the memory allocation just go wild.  500K 40KB files is about 20G.  It seems Java's stream writer never deallocate its buffer during the operation.
I once thought java GC does not have time to clean.  But this make no sense since I closed the file stream for every file.  I even transfer my code into C#, and running under windows, the same code producing 500K 40KB files with memory stable at certain point, not taking 14G as under CentOS.  At least C#'s behavior is what I expected, but I could not believe Java perform this way.  I asked my colleague who were experienced in java.  They could not see anything wrong in code, but could not explain why this happened.  And they admit nobody had tried to create 500K file in a loop without stop.
I also searched online and everybody says that the only thing need to pay attention to, is close the stream, which I did.
Can anyone help me to figure out what's wrong?
Can anybody also try this and tell me what you see?
BTW, some people in online community tried the code on Windows and it seemed to worked fine.  I didn't tried it on windows.  I only tried in Linux as I thought that where people use Java for.  So, it seems this issue happened on Linux).
I also did the following to limit the JVM heap, but it take no effects
    java -Xmx2048m -jar SimpleWriter.jar my_test_dir 500000

Good point, I actually run cat /proc/meminfo. And I got the following.  Why I have so big of Inactive(file) allocation?
MemTotal:       15239492 kB
MemFree:           83424 kB
Buffers:           76012 kB
Cached:         13920152 kB
SwapCached:            0 kB
Active:           391104 kB
Inactive:       14181268 kB
Active(anon):     288124 kB
Inactive(anon):   288268 kB
Active(file):     102980 kB
Inactive(file): 13893000 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        500432 kB
SwapFree:         500432 kB
Dirty:           2568700 kB
Writeback:          6064 kB
AnonPages:        576292 kB
Mapped:             9884 kB
Shmem:               140 kB
Slab:             472340 kB
SReclaimable:     421692 kB
SUnreclaim:        50648 kB
KernelStack:        1192 kB
PageTables:         4132 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8120176 kB
Committed_AS:     835900 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       38908 kB
VmallocChunk:   34359687700 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:    15728640 kB
DirectMap2M:           0 kB
BTW, my test used up all the memory again, and free -m show this
             total       used       free     shared    buffers     cached
Mem:         14882      14805         76          0         80      13583
-/+ buffers/cache:       1142      13740
Swap:          488          0        488
Any hint what's going on?

Similar Messages

  • Firefox has a memory leak and I need to update it, but I want to keep 3.5 because I don't like how the newest version of Firefox is set up.

    My computer is running low on RAM, and when I look at what processes are using the most memory, firefox is the number one using between 28,000 to 93,000k, so I'm guessing that it has a memory leak.
    And because of that memory leak I have to update firefox, however I really dislike the newest version of firefox and I'd prefer to stick with the version I have, which is 3.5.

    Often the memory problems are not just from Firefox in isolation, but partly relating to all the extensions available for it and then the videos and animations it runs on media rich sites.
    The first thing to do is to upgrade to firefox 3.6 which is at least a supported version (Maybe not for much longer)
    * see [[updating firefox]]
    Next version after 3.6 is 4, you should avoid that, it did have some memory problems, that were worse than 3,6 and firefox 4 is no longer secure or supported.
    The techies at Firefox have been working on memory problems recently and have made many improvements, but some of these improvements are only seen in the trial versions of Firefox.
    I would in fact suggest you upgrade to Firefox 5 the current release version (soon to be replaced with Firefox 6)
    I am able to run Firefox v3.6 to v8 on legacy XPs with less than 1GB RAM. Firefox in itself is not necessarily very demanding in terms of RAM. I am not sure what the figures are you are quoting, or whether they are high. ( Note 1Gb is in the order of 1 000 000 k )
    As for not liking the set-up of new versions of Firefox, there is quite abit that can be changed, maybe you would be able to configure it more to your liking with little effort.

  • Memory Leak in Linux

    Hi friends,
    Is anyone worked on any of the tools to identify and optimise Java Memory Leak in Linux environment?

    Hi friends,
    Is anyone worked on any of the tools to identify and
    optimise Java Memory Leak in Linux environment?Hi,
    I've been using Optimizeit on linux, and I like it.
    /Kaj

  • Why does system exec cause a memory leak to occur?

    Sorry if this has been posted before, but I can't quite figure out why this VI is causing a gigantic memory leak (losing nearly 500K of memory a second). It's a simple system exec call, and I even trivialized everything in order to try and discover the problem.
    Does anyone see a huge problem here? I've tried calling up taskkill afterward as well, though that seemed to make little difference.
    If you don't trust my trivial program (and you probably shouldn't), I've also included the source files for the program - it's a one-line C++ program that returns immediately.
    Any insight is greatly appreciated.
    Thanks!
    Attachments:
    Dilution.vi.zip ‏11 KB

    Try putting a wait - even a 0 second wait - in your loop and see if it makes a difference.  Without a wait, LabVIEW will try to run that loop as fast as possible, possibly so fast that it never yields time to free resources.

  • Does call to ptsname() cause memory leak?

    Purify signalled that the call to ptsname() is a memory leak. ptsname() returns a char* and
    apparently is doing this on the heap even though the man page says it is a static data area. My
    question is whether we need to do a free() on the return from ptsname()?

    I believe that there was a memory leak problem with DataSocket 3.0 which came with LabVIEW 5.1. Try upgrading DataSocket to 4.0.
    http://digital.ni.com/softlib.nsf/web%2Fall%20software?OpenView&Start=1&Count=500&Expand=6#6
    If that does not work, the problem may not have been resolved until LabVIEW 6. Also, if you happened to be using the French version of LabVIEW, contact tech support, there was a specific problem there which does have a work around.

  • Wpg_docload.download_file slow (or has a memory leak)

    Hi, (Maybe this should be in the pl/sql forum, but since this is so much used in Apex and I ran into this problem there, I decided to post it here).
    There seems to be a memory leak or some other issue with using wpg_docload.download_file
    I have a couple of pages that show many images (50+, icon sized) . And usually a few days after restarting the Oracle http server, I see the image rendering becoming extremely slow (and usually most images timing out.)
    So in all my procedures using :
    wpg_docload.download_file ( lob_loc );
    I switched it out for :
    declare
    buffer raw ( 32000 );
    buffer_size integer := 32000;
    offset integer := 1;
    begin
    while offset < v_length loop
    dbms_lob.read ( lob_loc, buffer_size, offset, buffer );
    htp.prn ( utl_raw.cast_to_varchar2 ( buffer ) );
    offset := offset + buffer_size;
    end loop;
    end;
    And the speed increase in image loading was phenomenal, I am looking at over 10x speed recieving the image data from the webserver.
    Is there a known bug with wpg_docload.download_file in 10.2.0.2?
    But anyways, if anybody else is running into this slowness, then by all means, try out this workaround.
    Regards
    Oli
    edit:
    There seems to be one other thing that matters in the resulting speed of the image retrieval. I used mod_rewrite to make the images look like /icon/1235.jpg
    and after further testing, this seems to be the catalyst for image retrieval. Not the wpg_docload.download_file
    Message was edited by:
    Oli

    Oli,
    Image retrieval for something.jpg is faster then proc?id=1234That fits in with my theory, browsers often will not rely on a cached version for a URL that contains a parameter (after all, how would the browser know whether the URL is going to return the same data or not even if the parameter is the same?). When you request a particular file (i.e. something.jpg then the browser can use the cache since you have requested a particular file, as opposed to calling a 'procedure/function'.
    This is definetly a browser issue, and it has nothing to do with cacheYou browser has a cache and can use it if it wishes to, so I would still suspect it is related to caching (or lack of caching).
    I would suggest producing the smallest possible test case you can so that the behaviour you describe can be demonstrated.

  • Firefox 4.0 RC has huge memory leak + slow down problem

    Firefox 4.0 RC Seems to have a huge memory leak issue. After leaving the program open for around half an hour the RAM usage climbs to over 1 gb.
    However, I have 12 gb of physical ram, so firefox staking 1 gb for itself is not too big of a problem (and is probably a blessing as it means it's caching more data), but the problem is that the UI begins to slow down and become clunky after about 30 minutes.
    Browsing, switching tabs, even typing becomes jittery and not very responsive.
    This happens regardless of how many tabs I have open.
    Now it's also crashing every once in a while.

    Even with Firefox 4.0 (Release) running in Safe Mode, with all add-ons and themes disabled, I'm still inclined to think there's something screwy going on here.
    I was watching Page Faults/sec, Page File Bytes and Working Set in Performance Monitor and tailing the Privoxy log for requests. Even with Firefox minimized and "doing nothing" (making no requests, anyway), over the space of a 10 minute period the Working Set grew from 244,375,552 bytes to 274,939,004 bytes (averaging 50,939 bytes/second). This behaviour doesn't seem consistent though - sometimes it doesn't seem to grow at all.
    Additionally the Page Faults/Sec went nuts, accompanied by a step in Page File Bytes and Working Set, whenever a request got made to http://safebrowsing.clients.google.com/safebrowsing/downloads which seems to happens on a regular basis (approximately every 30 minutes).

  • Firefox 21.0 on OS X 10.8.4 still has a memory leak that occurs with no Add ons, 1 tab and leads to 3GB of memory usage in 10 minutes.

    While using Firefox 21.0 on OS X 10.8.4 with 4GB RAM, Firefox memory usage marches up and up until at 3GB (on my iMac) Firefox hangs and is 100% non-responsive and must be killed with Force Quit. It takes 10 minutes to occur.
    No Add Ons
    One tab

    John99,
    Unfortunately, the problem was WORSE in FF 22.0. I regressed to FF21.0 and shut off automatic updates. I may even go back to FF3.6, which is the last one where I didn't see this problem.
    Thank you for trying but as a longstanding developer I know that pervasive memory leaks is a sign of a broken development process. Thank you for trying...

  • Memory Leak in Linux OS

    Using JNI1.2 for C++ and JAVA communication. And the Java application is a multithread application and monitoring JBoss application server using JMX. In each 5 minute interval the C++ application is invoking a method of java class and for each method call its creating a thread and retrieving the value from JBoss.
    the Code in run method of thread is as follows
    Object obj = context.lookup( "ejb/mgmt/MEJB" );
              ManagementHome home = (ManagementHome) PortableRemoteObject.narrow(obj,ManagementHome.class);
              server = home.create();
    //after that am retrieving the value
    But for each iteration the memory is increasing by 2MB of JVM . Its looks like a memory leak in JVM. The JVM version am using is 1.4.2.6.
    Could any one suggest me what may be the problem. THis problem is not occuring in Window OS.
    Thanks in advance.

    The JVM version am using is 1.4.2.6.Give it a try with 1.4.2_08.

  • Java.awt.Dialog in Java 1.6 has a memory leak

    When a modal Dialog opens a modal sub-dialog, the Dialog stays in memory after both the sub-dialog and the Dialog itself is disposed.
    The field that contains the leaked object is Dialog.modalDialogs (static). The methods which causes the leak are Dialog.modalHide and Dialog.modalShow.
    Whenever a modal Dialog is opened, Dialog.modalShow is called, and adds itself to Dialog.modalDialogs.
    When it closes, Dialog.modalHide is called and removes one copy of itself from Dialog.modalDialogs. Then Dialog.modalShow is called on all previously blocked modal dialogs. When the sub-dialog is opened and closed, Dialog.modalDialogs contains two references to the main Dialog, and only one of them is removed when Dialog.modalHide for that Dialog is called.
    To detect the leak, just put a break point in Dialog.modalHide, after modalDialogs.remove(this);. When opening a Dialog and closing it without opening a sub-dialog, the Dialog.modalDialogs field should be empty. When a sub-dialog was opened and closed before the main Dialog is closed, the Dialog.modalDialogs field contains a reference to the disposed main Dialog.
    This leak does not exist in 1.5.0_10 (no Dialog.modalDialogs field). I have searched the bug database, but I have not found this bug there. Could anyone confirm this?
    A simple code to reproduce the leak:
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowEvent;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    public class Test {
       public static void main(String[] args) {
          final JFrame frame = new JFrame() {
             protected void processWindowEvent(WindowEvent e) {
                super.processWindowEvent(e);
                if (e.getID() == WindowEvent.WINDOW_CLOSING) {
                   System.exit(0);
          JButton button = new JButton("Dialog");
          button.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent aE) {
                JButton subButton = new JButton("SubDialog");
                subButton.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent aE) {
                      JOptionPane.showMessageDialog(frame, "SubDialog");
                JOptionPane.showMessageDialog(frame, subButton);
          frame.getContentPane().add(button);
          frame.pack();
          // Center the window
          Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
          Dimension frameSize = frame.getSize();
          if (frameSize.height > screenSize.height) {
             frameSize.height = screenSize.height;
          if (frameSize.width > screenSize.width) {
             frameSize.width = screenSize.width;
          frame.setLocation((screenSize.width - frameSize.width) / 2,
                (screenSize.height - frameSize.height) / 2);
          frame.setVisible(true);
    }

    Sorry, I just found the bug in the bugdatabase (with google of course,):
    [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6497929]

  • Version 23.0 on Windows 7 64 bit has major memory leak issues, how do I fix or revert to version 22?

    Upon updating to version 23.0.1, the memory usage on Firefox routinely runs over 1GB and eventually causes me to restart the application. This is directly linked to an upgrade in August to version 23.0.1, I would like to either downgrade or fix the problem with 23. IF this is an issue with plug-ins, how do I determine that? My problem is that this only started occurring after I installed version 23, so I have to assume it was caused by that and not by some plug in as those have not changed.
    Was the application regression tested against all plug-ins to ensure these issues did not occur?

    Hello,
    The first thing I suggest is updating your Firefox to v24 (the latest version). Every new version of Firefox brings bug fixes and security updates. It maybe that whatever is causing high RAM usage will be solved by the update.
    [[Update Firefox to the latest version]]
    If you find that the problem is still occurring in v24 then please see the support article here:
    [[Firefox uses too much memory (RAM) - How to fix]]
    This has various tips on diagnosing and fixing high RAM usage issues.
    I particularly suggest that you try:
    * Updating plugins
    * Checking your extensions and themes to see if any of these are to blame
    * Trying the memory troubleshooting tools (about:memory)
    I hope that helps. Let me know if not.

  • Firefox 3.6 has a memory leak with Winamp Toolbar on Windows 7

    I recently installed the Winamp Toolbar and everytime I closed FF, it would hang and stay open and my CPU would be 100%. The only way to shut it down was thru the task manager. It took me some time to figure out exactly what the problem was but after uninstalling just the Winamp Toolbar, FF closed smoothly. So, im pretty positive it has to do with Winamp Toolbar. I have contacted Winamp but with no response.
    I am running Windows 7 Premium Home Edition (64-bit) and Firefox 3.6.10.

    I wanted to add that I've been having this problem as well.
    I believe it is not OS specific, because I've been having this both on my XP & my windows 7 ( both 32bit home editions).
    I can add that just disabling the addon suffices to prevent the problem. But if you can't use it, you're better of uninstalling it anyway

  • Firefox has extreme memory leak

    After using Firefox for several hours, it begins consuming more than 500mb of memory.
    == This happened ==
    Every time Firefox opened
    == I began using Firefox 3.3.6

    Hello everyone.
    This problems are not, in 99,9% of the cases, Firefox's fault. Rather, they are caused by problematic add-ons or third party software. But you do need to diagnose what your exact problem is. Do this:
    #run Firefox in [http://support.mozilla.com/en-US/kb/Safe+Mode safe-mode] to disable all extensions, themes and plugins. If this fixes your issues, be them with RAM or CPU usage, then you know it's a problem with plugins, themes or extensions. Proceed to number 2. If safe-mode doesn't fix the issues, then read bellow, after this list;
    #update all extensions, themes and plugins in your Firefox. If this doesn't solve the issues, proceed to the following number;
    #disable all extensions, themes and plugins in your Firefox (not running safe-mode). Being certain that, as in safe-mode, the problems you're having have gone away, enable one plugin at a time. You should be certain that you WANT that plugin to be enabled, so keep your overall number of plugins as low as possible. When you encounter the problems, you know you've found a problematic plugin, so disable it for good. Keep enabling all plugins (except problematic ones) until you've gone through them all.
    #enable one extension at a time. Again, be certain that you WANT that extension to be enabled, so keep your overall number of extensions as low as possible. Also, try the theme you want to have installed so see if that is what's causing the problem. When you encounter the problems, you know you've found a problematic extension/theme, so disable it for good. Keep enabling all your extensions (except problematic ones) until you've gone through them all;
    #you're done! You've fixed your problems with problematic add-ons. If you want to keep using those problematic add-ons, please contant their author for support.
    Ok, if disabling all extensions and plugins through safe-mode didn't work to bring Firefox's CPU and RAM usage to good levels, then you have different issue. The most likely scenario is that you have a third party software running on your computer that is messing with Firefox. Do as follows:
    #try reinstally Firefox. No data will be lost. You can get the latest version for free at [http://www.getfirefox.com/ getfirefox.com]. If that doesn't fix the problem, proceed;
    #do a virus/malware check on your computer. If this doesn't fix it, proceed;
    #disable all software running in the background that you don't want to have running in the background (in windows, this is done by pressing WINDOWS+R in your keyboard, typing "msconfig" (without the commas) and pressing enter. Now, under the "Startup" tab, you can uncheck the software you don't want, and reboot your system for changes to take effect. If you're unsure of what software you want running, ask someone with more experience). If this doesn't fix your issues with Firefox, proceed;
    #check your firewall/antivirus/security suite for enabled functions/features that you don't want and/or may be conflicting with Firefox. You'll find that these features are most likely tied to Internet Security features, such as link scanners or URL checkers and the like. If you're not sure they are conflicting with Firefox, simply try to disable them to see whether or not that's true. As long as you don't browse the web with your antivirus completely off and your firewall completely turned off, there should be no problems. If this doesn't solve the issues, proceed to the following number;
    #check your operating system security options, mainly advanced options that are not configured by default. While it's very unlikely that this may be the cause of the problem (after all, it's the last item on the list), it's remotely possible. If this doesn't work, proceed to the following point;
    #clean up your OS registry, using appropriate software. If this doesn't do it, I'm out of ideas. Except make sure you've followed my instructions correctly.

  • Firefox 6.0 has memory leak

    Firefox 6.0 (release) has a memory leak.
    Tested with 5 windows and 43 pages loaded and left overnight, it crashed after several hours. Able to fully repro this every time.
    I left it for 10 mins after all pages loaded. I opened Task Manager and I can see the Memory (Private Working Set) increasing every few seconds.

    Well I'm using 7 beta and my memory usage is just short of 600,000k with plugin container using another 220,000k. There is a massive problem with this!

  • Memory leak in 16 lines

    Here is a trivial program (16 lines) that repeatedly writes the same string into an ObjectOutputStream. It has a memory leak so severe that it not able to iterate more than 1.5 million times with 256M of memory on Windows/2000. Calling System.gc() periodically doesn't make any difference. I'm using 1.3.1_01. Does anyone have any idea how to avoid this?
    Here is the code:
    import java.io.*;
    public class LeakTest {
    public static void main(String[] args) throws IOException
    int i, j;     
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("mine.tmp"));     
    for(i = 0, j = 0; i < 10000000; i++) {
    String s = new String("hello");
    out.writeObject(s);
    if(++j == 10000) {
    j = 0;
    //System.gc();
    System.out.println(i);

    $java -Xrunhprof:heap=sites,thread=y LeakTest
    SITES BEGIN (ordered by live bytes) Thu Jan 10 11:13:45 2002
              percent         live       alloc'ed  stack class
    rank   self  accum    bytes objs   bytes objs trace name
        1 41.51% 41.51%  6291468 1048578 6291468 1048578   591 java.lang.String
        2 41.51% 83.02%  6291462 1048577 6291462 1048577   592 [C
        3  6.92% 89.94%  1048580    1 2097216   18   640 [I
        4  6.92% 96.86%  1048580    1 2097216   18   641 java.lang.ObjectThese four allocation sites took up 96.86% of the live memory when the OutOfMemoryException was thrown. Consider that the first two allocation sites are found in the new String("hello") constructor... the other two allocation sites are found in ObjectOutputStream$HandleTable.growEntries().
    Recall that an ObjectOutputStream writes a connected map of all of the objects written to the stream. To correctly back-reference already written objects, the stream needs to keep a reference to every object already written... which means that none of the Strings created in your program ever become eligible for garbage collection, until the ObjectOutputStream no longer needs its handle table - when it is closed.
    Conclusion? ObjectOutputStream is a memory leak if not closed. If you do not require a connected map of your serialised objects, consider wrapping an ObjectOutputStream around a ByteArrayOutputStream to serialise each request, and then send the resulting set of bytes to the FileOutputStream. This way you aren't preventing large numbers of objects from being collected.
    Hope this helps,
    -Troy
    PS- unless you were passing the -Xmx runtime option to java, you were probably only using 32Mb of your 256Mb of memory :-)

Maybe you are looking for

  • IOS 7 calendar

    Aside from sending a complaint to Apple, what can be done to convince the designers of the iOS 7 calendar to return to the more efficient month calendar view?!!!!! I can no longer, in one glance at the month view, get any information.  Just those dot

  • Macbook freezes when connecting external display

    I have tried to connect my MacBook to an external monitor, a ViewSonic VA1912wb, but the MacBook freezes each time I try. There is no opportunity to go to System Preferences with the display attached. Has anyone got an idea how to deal with this? Mac

  • HT5682 JAVA for OS X 2013-003 1.0

    Will this update affect my SAP Java GUI? A previous update of Java cause my SAP Java GUI to stop working

  • There is no export option when display ALV

    Hi all, Currently, I use function module 'REUSE_ALV_GRID_DISPLAY' to display output for my report. However, when I choose List on the menu to export the result to an excel file, the export option doesn't exist instead I can only choose Graphic, Portf

  • How to Apply Color to Placed .PNG file in AI_CS2 & keep Transparency?

    So unfortunately I'm stuck with CS2, but it sure beats not having it at all. I'm importing a graphic icon that was saved from Photoshop as a .PNG file with transparency into AI_CS2. (I can open the .PNG and resave it with any options or as a differen