Hi Jc,
     Thanks a lot. it is not a necessary change, I forget to omit it:)

BRs,
Lin
________________________________
发件人: JC Beyler <jcbey...@google.com>
发送时间: 2019年1月11日 0:58:22
收件人: 臧琳
抄送: Hohensee, Paul; serviceability-dev@openjdk.java.net
主题: Re: [RFR]8215622: Add dump to file support for jmap histo

Hi Lin,

Small nit:
http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.02/src/java.base/share/native/libjli/java.c.udiff.html

needs a copyright update,
Jc


On Wed, Jan 9, 2019 at 7:48 PM 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>> 
wrote:
Dear All,
       I have updated the refined webrev at 
http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.02/
       Would you like to help review? Thanks!

BRs,
Lin
From: 臧琳
Sent: Wednesday, January 9, 2019 11:00 AM
To: 'JC Beyler' <jcbey...@google.com<mailto:jcbey...@google.com>>
Cc: Hohensee, Paul <hohen...@amazon.com<mailto:hohen...@amazon.com>>; 
serviceability-dev@openjdk.java.net<mailto:serviceability-dev@openjdk.java.net>
Subject: RE: [RFR]8215622: Add dump to file support for jmap histo

Dear JC,
       Thanks to point it out, I processed the “-file=” case in JMap.java but 
forgot to do it in attachListener.cpp. I will do it in next webrev.

Cheers,
Lin

From: JC Beyler <jcbey...@google.com<mailto:jcbey...@google.com>>
Sent: Wednesday, January 9, 2019 10:51 AM
To: 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>>
Cc: Hohensee, Paul <hohen...@amazon.com<mailto:hohen...@amazon.com>>; 
serviceability-dev@openjdk.java.net<mailto:serviceability-dev@openjdk.java.net>
Subject: Re: [RFR]8215622: Add dump to file support for jmap histo

Hi Lin,

Inlined as well :-)

On Tue, Jan 8, 2019 at 6:23 PM 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>> 
wrote:
Dear JC,
         Thanks for your comments, I inlined my comments here:
http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/src/hotspot/share/services/attachListener.cpp.udiff.html
  - Should we do like the rest of the file and declare variables when needed 
instead of doing them all at the start?
    --- (Lin) I will do that in next webrev.
  - Should the method return JNI_ERR if the file cannot be created (because if 
not, then why fail if no file is passed at all?)
   --- (Lin) The logic is that when user use “-file=<filename>”, the file must 
be created successful, otherwise the “-file=” not work, which break user’s 
expection, so it fail here. If user not specify “-file=”, it indicate that user 
not expect to dump to file, so the outputStream will be used. Do you think it 
is reasonable?


No that is reasonable BUT your code currently allows the user to do "--file="; 
in this absurd case, your code prints out "No dump file specified" and just 
continues. Why not make that fail as well?

The bigger issue I see is the passing of NULL for a filename, why do we not do 
things where you just really pass "-file=<file>" to the attachListener.cpp and 
handle the parsing there?; it would then make more sense to me: we either pass 
"-file=<file>" or not but we no longer have a "maybe there is or not a file, so 
maybe there is a NULL there".
---(Lin) This is similar with what I have done in webrev00, but I think maybe 
processing arguments in JMap.java is more reasonable, I think logically, it is 
JMap’s responsibility to parsed it’s command line arguments, and then pass it 
to attachListener. The attachListener just hearing from the socket and get 
command and parsed arguments. And one more reason maybe that in java it is easy 
to get the canonical path from the API getCanonicalPath(), which I guess maybe 
a little complicate to do it cross platform in attachListener.cpp.

I think it's a style choice perhaps? I'd rather have the code look at the 
arguments and see if it is --file or if it is --live or --all and then figure 
out what to do instead of having now "null or a file" for arg0. But I can see 
the conversation go both ways in this case.

Thanks!
Jc


All other comments will be handled in the next webrev. Thanks a lot for your 
review and suggestions.

Cheers,
Lin


From: JC Beyler <jcbey...@google.com<mailto:jcbey...@google.com>>
Sent: Wednesday, January 9, 2019 1:42 AM
To: 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>>
Cc: Hohensee, Paul <hohen...@amazon.com<mailto:hohen...@amazon.com>>; 
serviceability-dev@openjdk.java.net<mailto:serviceability-dev@openjdk.java.net>
Subject: Re: [RFR]8215622: Add dump to file support for jmap histo

Hi Lin,

I have a few nits:
  
http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/src/jdk.attach/aix/classes/sun/tools/attach/VirtualMachineImpl.java.udiff.html
  
http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java.udiff.html
  
http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/src/jdk.attach/macosx/classes/sun/tools/attach/VirtualMachineImpl.java.udiff.html

You could fix the spaces arount the for loop you changed:

+            for (int i=0; i<4; i++) {
to

+            for (int i = 0; i < 4; i++) {


http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/src/hotspot/share/services/attachListener.cpp.udiff.html
  - Should we do like the rest of the file and declare variables when needed 
instead of doing them all at the start?
  - Should the method return JNI_ERR if the file cannot be created (because if 
not, then why fail if no file is passed at all?)

http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/src/jdk.jcmd/share/classes/sun/tools/jmap/JMap.java.udiff.html
+            filename = opt.substring(5);
+            if (filename != null) {
   -> I don't see how filename can be null here
  -> same filename could just be declared in the if



+            } else if (subopt.startsWith("file=")) {
+                filename = parseFileName(subopt);

-> So actually you are testing twice if the string starts with "file=", maybe 
remove the one in the method?

-> in the option string printouts, you don't specify that all is an option as 
well, is that normal?


The bigger issue I see is the passing of NULL for a filename, why do we not do 
things where you just really pass "-file=<file>" to the attachListener.cpp and 
handle the parsing there?; it would then make more sense to me: we either pass 
"-file=<file>" or not but we no longer have a "maybe there is or not a file, so 
maybe there is a NULL there".

Thanks,
Jc

On Mon, Jan 7, 2019 at 2:11 AM 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>> 
wrote:

Hi Paul,
    I think it is not necessary to have a loop for argument processing, since 
there is not so much arguments to handle.
   And I made a new webrev 
http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/

Hi All,
    May I also ask your help for reviewing this webrev?
    webrev http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.01/
    Bug: https://bugs.openjdk.java.net/browse/JDK-8215622

Thanks!
Lin

________________________________
发件人: serviceability-dev 
<serviceability-dev-boun...@openjdk.java.net<mailto:serviceability-dev-boun...@openjdk.java.net>>
 代表 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>>
发送时间: 2019年1月3日 10:21
收件人: Hohensee, Paul; 
serviceability-dev@openjdk.java.net<mailto:serviceability-dev@openjdk.java.net>
主题: [发件地址伪造,恶意邮件,勿点] RE: [RFR]8215622: Add dump to file support for jmap histo


Dear Paul,

       Thanks a lot for your review! I am trying to remend the patch

       One problem is that in future, I will add more options for histo, such 
as “parallel”, “incremental”.

so do you thinking option processing with loop in heap_inspection() in 
attachListener.cpp would

be more reasonable than the “if else” ?

Thanks



BRs,

Lin







From: Hohensee, Paul <hohen...@amazon.com<mailto:hohen...@amazon.com>>
Sent: Saturday, December 29, 2018 3:54 AM
To: 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>>; 
serviceability-dev@openjdk.java.net<mailto:serviceability-dev@openjdk.java.net>
Subject: Re: [RFR]8215622: Add dump to file support for jmap histo



Update the copyright dates to 2019 please, since this won’t get pushed until 
then.



In JMap.java, I’d emulate dump() and use



        String filename = null;

        String subopts[] = options.split(",");



        for (String subopt : subopts){

            if (subopt.isEmpty() || subopt.equals("all")) {

                // pass

            } else if (subopt.equals("live")) {

                liveopt = "-live";

            } else if (subopt.startsWith("file=")) {

                // file=<file> - check that <file> is specified

                if (subopt.length() > 5) {

                    filename = subopt.substring(5);

                }

            } else {

              usage(1);

            }

         }



         // get the canonical path - important to avoid just passing

         // a "heap.bin" and having the dump created in the target VM

         // working directory rather than the directory where jmap

         // is executed.

         filename = new File(filename).getCanonicalPath();

         // inspectHeap is not the same as jcmd GC.class_histogram

         executeCommandForPid(pid, "inspectheap", filename, liveopt);



I.e., use an enhanced for loop to scan the array, and duplicate dump()’s 
executeCommandForPid() argument order, as well as dump()’s “file=<>” check (the 
code that starts with “if (subopt.startsWith”) and canonicalization. Actually, 
better to factor the latter out into its own method and use it from both 
histo() and dump().



The argument checking code in heap_inspection() in attachListener.cpp can be 
simplified along the lines of dump_heap(). I.e., you don’t need to loop over 
the argument list. To match up with dump_heap()’s info messages, the info 
message string at the end should be “Heap inspection file created: %s”.



Thanks,



Paul



From: serviceability-dev 
<serviceability-dev-boun...@openjdk.java.net<mailto:serviceability-dev-boun...@openjdk.java.net>>
 on behalf of 臧琳 <zangl...@jd.com<mailto:zangl...@jd.com>>
Date: Thursday, December 20, 2018 at 11:03 PM
To: 
"serviceability-dev@openjdk.java.net<mailto:serviceability-dev@openjdk.java.net>"
 
<serviceability-dev@openjdk.java.net<mailto:serviceability-dev@openjdk.java.net>>
Subject: [RFR]8215622: Add dump to file support for jmap histo



Hi All,

       May I ask your help to review this patch for enhance jmap �Chisto.

It add the “file=<path>” arguments that allow jmap �Chisto outputs data to file 
directly.

This patch is also part of the enhancement described in 
https://bugs.openjdk.java.net/browse/JDK-8214535.



Webrev: http://cr.openjdk.java.net/~xiaofeya/8215622/webrev.00/

Bug: https://bugs.openjdk.java.net/browse/JDK-8215622



Thanks.



BRs,

Lin








--

Thanks,
Jc


--

Thanks,
Jc


--

Thanks,
Jc

Reply via email to