คำถามติดแท็ก jvm

Java Virtual Machine (JVM) เปิดใช้งานชุดของโปรแกรมซอฟต์แวร์คอมพิวเตอร์และโครงสร้างข้อมูลเพื่อใช้โมเดลเครื่องเสมือนสำหรับการทำงานของโปรแกรมคอมพิวเตอร์และสคริปต์อื่น ๆ ใช้แท็กนี้สำหรับคำถามที่เกี่ยวข้องกับเครื่องมือที่จัดทำโดย JVM หรือวิธีการทำงานในสถานการณ์เฉพาะ

1
ความแตกต่างระหว่างการสุ่มตัวอย่างและการทำโปรไฟล์ใน jVisualVM
VisualVM มีสองแท็บแยกต่างหากสำหรับการสุ่มตัวอย่างและการทำโปรไฟล์ ความแตกต่างระหว่างการสุ่มตัวอย่างและการทำโปรไฟล์ใน VisualVM คืออะไร?
158 java  jvm  heap  jvisualvm 

3
ความแตกต่างระหว่าง _JAVA_OPTIONS, JAVA_TOOL_OPTIONS และ JAVA_OPTS
ฉันคิดว่ามันจะดีที่จะมีการเปรียบเทียบระหว่างและ_JAVA_OPTIONS JAVA_TOOL_OPTIONSฉันค้นหามาซักพักหนึ่งแล้ว แต่ฉันไม่สามารถหาอะไรได้เลยฉันหวังว่าเราจะสามารถค้นหาความรู้ได้ที่นี่ใน Stackoverflow JAVA_OPTSถูกรวมไว้เพื่อความสมบูรณ์ มันไม่ได้เป็นส่วนหนึ่งของ JVM แต่มีคำถามมากมายเกี่ยวกับเรื่องนี้ในป่า สิ่งที่ฉันรู้: จนถึงตอนนี้ฉันได้พบว่า: JAVA_OPTSไม่ได้ใช้โดย JDK แต่เป็นแอพอื่น ๆ (ดูบทความนี้ ) JAVA_TOOL_OPTIONSและ_JAVA_OPTIONSเป็นวิธีในการระบุอาร์กิวเมนต์ JVM เป็นตัวแปรสภาพแวดล้อมแทนพารามิเตอร์บรรทัดคำสั่ง ถูกหยิบขึ้นมาอย่างน้อยjavaและjavac พวกเขามีความสำคัญนี้: _JAVA_OPTIONS (เขียนทับคนอื่น ๆ ) พารามิเตอร์บรรทัดคำสั่ง JAVA_TOOL_OPTIONS (ถูกแทนที่โดยผู้อื่น) สิ่งที่ฉันอยากรู้ มีเอกสารอย่างเป็นทางการใด ๆ ที่เปรียบเทียบJAVA_TOOL_OPTIONSและ_JAVA_OPTIONS มีความแตกต่างอื่น ๆ ระหว่างJAVA_TOOL_OPTIONSและ_JAVA_OPTIONS(ยกเว้นจากความสำคัญ) ไฟล์ที่เรียกใช้งานได้JAVA_TOOL_OPTIONSและ_JAVA_OPTIONS(นอกเหนือจากjavaและjavac) ข้อ จำกัด ใด ๆ เกี่ยวกับสิ่งที่สามารถรวมอยู่ในJAVA_TOOL_OPTIONSและ_JAVA_OPTIONS เอกสารอย่างเป็นทางการ ฉันยังไม่ได้สามารถที่จะหาเอกสารใด ๆ _JAVA_OPTIONSเกี่ยวกับ เอกสารสำหรับJAVA_TOOL_OPTIONSไม่หลั่งน้ำตาแสงมากเกี่ยวกับความแตกต่าง: เนื่องจากบรรทัดคำสั่งไม่สามารถเข้าถึงหรือแก้ไขได้เสมอตัวอย่างเช่นใน VMs ฝังตัวหรือเพียงแค่เปิดตัว VMs …
151 java  jvm  jvm-arguments 


9
คุณสมบัติ Bytecode ไม่มีให้บริการในภาษา Java
ปัจจุบันมี (Java 6) สิ่งที่คุณสามารถทำได้ใน Java bytecode ที่คุณไม่สามารถทำได้จากในภาษา Java หรือไม่? ฉันรู้ว่าทั้งทัวริงสมบูรณ์ดังนั้นอ่าน "สามารถทำได้" ในฐานะ "สามารถทำได้เร็วกว่า / ดีกว่าหรือในวิธีที่ต่างออกไป" ฉันกำลังคิดว่าจะใช้โค้ดไบต์พิเศษinvokedynamicซึ่งไม่สามารถสร้างขึ้นได้โดยใช้ Java ยกเว้นว่าจะเป็นรุ่นเฉพาะสำหรับรุ่นในอนาคต
146 java  jvm  bytecode 

27
คุณจะทำ JVM ผิดพลาดได้อย่างไร?
ฉันกำลังอ่านหนังสือเกี่ยวกับทักษะการเขียนโปรแกรมที่ผู้เขียนถามผู้สัมภาษณ์ว่า "คุณทำ JVM ผิดพลาดได้อย่างไร" ฉันคิดว่าคุณสามารถทำได้โดยเขียน infinite for-loop ที่จะใช้หน่วยความจำหมด ใครมีความคิดบ้าง
144 java  jvm 

7
วิธีตั้งค่า JVM TimeZone ให้ถูกต้อง
ฉันพยายามเรียกใช้โปรแกรม Java แต่ใช้เขตเวลา GMT เป็นค่าเริ่มต้นแทนที่จะเป็นเขตเวลาที่กำหนดโดยระบบปฏิบัติการ รุ่น JDK ของฉันคือ 1.5 และระบบปฏิบัติการคือ Windows Server Enterprise (2007) Windows ระบุเขตเวลาส่วนกลาง แต่เมื่อฉันเรียกใช้โปรแกรมต่อไปนี้จะให้เวลา GMT แก่ฉัน import java.util.Calendar; public class DateTest { public static void main(String[] args) { Calendar now = Calendar.getInstance(); System.out.println(now.getTimeZone()); System.out.println(now.getTime()); } } นี่คือผลลัพธ์ sun.util.calendar.ZoneInfo[id="GMT", offset=0, dstSavings=0, useDaylight=false, transitions=0, lastRule=null] Mon Mar 22 13:46:45 …

8
ที่อยู่หน่วยความจำของตัวแปรใน Java
โปรดดูภาพด้านล่าง เมื่อเราสร้างวัตถุใน java ด้วยnewคำหลักเราจะได้รับที่อยู่หน่วยความจำจากระบบปฏิบัติการ เมื่อเราเขียนout.println(objName)เราจะเห็นสตริง "พิเศษ" เป็นผลลัพธ์ คำถามของฉันคือ: ผลลัพธ์นี้คืออะไร หากเป็นที่อยู่หน่วยความจำที่ระบบปฏิบัติการมอบให้เรา: a) ฉันจะแปลงสตริงนี้เป็นไบนารีได้อย่างไร b) ฉันจะรับที่อยู่ตัวแปรจำนวนเต็มหนึ่งตัวได้อย่างไร

3
จำนวนพารามิเตอร์สูงสุดในการประกาศเมธอด Java
จำนวนพารามิเตอร์สูงสุดที่เมธอดใน Java สามารถมีได้คือเท่าใดและเพราะเหตุใด ฉันใช้ Java 1.8 บนระบบ Windows 64 บิต คำตอบทั้งหมดบน StackOverflow เกี่ยวกับเรื่องนี้บอกว่าขีด จำกัด ทางเทคนิคคือ 255 พารามิเตอร์โดยไม่ระบุสาเหตุ เพื่อความแม่นยำ 255 สำหรับวิธีคงที่และ 254 สำหรับไม่คงที่ ( thisในกรณีนี้จะเป็น 255) ฉันคิดว่าสิ่งนี้สามารถอธิบายได้ในข้อกำหนดบางประเภทและมีเพียงจำนวนพารามิเตอร์สูงสุดที่กำหนดแบบคงที่ที่อนุญาต แต่สิ่งนี้ใช้ได้สำหรับintและประเภท 4 ไบต์ทั้งหมดเท่านั้น ฉันทำการทดสอบกับlongพารามิเตอร์บางอย่างและฉันสามารถประกาศพารามิเตอร์ 127 รายการในกรณีนั้นเท่านั้น ด้วยStringพารามิเตอร์จำนวนที่อนุญาตที่ฉันอนุมานได้จากการทดสอบคือ 255 (อาจเป็นเพราะขนาดอ้างอิงคือ 4 ไบต์ใน Java?) แต่เนื่องจากฉันใช้ระบบ 64 บิตขนาดอ้างอิงจึงควรกว้าง 8 ไบต์และด้วยStringพารามิเตอร์จำนวนสูงสุดที่อนุญาตควรเป็น 127 ซึ่งคล้ายกับlongประเภท ขีด จำกัด นี้ถูกนำไปใช้อย่างไร? ขีด จำกัด …
134 java  jvm 

2
Java: int array เริ่มต้นด้วยองค์ประกอบที่ไม่ใช่ศูนย์
ตาม JLS intอาร์เรย์ควรเติมด้วยศูนย์หลังจากเริ่มต้น อย่างไรก็ตามฉันต้องเผชิญกับสถานการณ์ที่ไม่เป็นอยู่ พฤติกรรมดังกล่าวเกิดขึ้นก่อนใน JDK 7u4 และยังเกิดขึ้นในการอัปเดตทั้งหมดในภายหลัง (ฉันใช้การใช้งาน 64 บิต) รหัสต่อไปนี้แสดงข้อยกเว้น: public static void main(String[] args) { int[] a; int n = 0; for (int i = 0; i < 100000000; ++i) { a = new int[10]; for (int f : a) if (f != 0) throw new RuntimeException("Array …

11
แทนที่ Java System.currentTimeMillis สำหรับการทดสอบโค้ดที่ไวต่อเวลา
มีวิธีการในรหัสหรือด้วยอาร์กิวเมนต์ JVM เพื่อแทนที่เวลาปัจจุบันตามที่นำเสนอผ่านSystem.currentTimeMillisนอกเหนือจากการเปลี่ยนนาฬิการะบบด้วยตนเองบนเครื่องโฮสต์หรือไม่ พื้นหลังเล็กน้อย: เรามีระบบที่เรียกใช้งานบัญชีจำนวนมากที่หมุนเวียนตรรกะส่วนใหญ่ในวันที่ปัจจุบัน (เช่นวันที่ 1 ของเดือนวันที่ 1 ของปี ฯลฯ ) น่าเสียดายที่รหัสเดิมจำนวนมากเรียกใช้ฟังก์ชันเช่นnew Date()หรือCalendar.getInstance()ซึ่งในที่สุดทั้งสองเรียกSystem.currentTimeMillisว่า สำหรับวัตถุประสงค์ในการทดสอบตอนนี้เราติดอยู่กับการอัปเดตนาฬิการะบบด้วยตนเองเพื่อปรับแต่งเวลาและวันที่ที่รหัสคิดว่ากำลังทำการทดสอบ ดังนั้นคำถามของฉันคือ: มีวิธีลบล้างสิ่งที่ส่งคืนSystem.currentTimeMillisหรือไม่? ตัวอย่างเช่นหากต้องการบอกให้ JVM เพิ่มหรือลบออฟเซ็ตบางส่วนโดยอัตโนมัติก่อนที่จะกลับจากวิธีการนั้น ขอบคุณล่วงหน้า!
129 java  testing  jvm  systemtime 

12
รับเวอร์ชัน Java ที่รันไทม์
ฉันต้องการแก้ไขข้อบกพร่องของ Java ใน JDK 1.5 ซึ่งได้รับการแก้ไขใน 1.6 ฉันใช้เงื่อนไขต่อไปนี้: if (System.getProperty("java.version").startsWith("1.5.")) { ... } else { ... } สิ่งนี้จะใช้ได้กับ JVM อื่น ๆ หรือไม่? มีวิธีตรวจสอบที่ดีกว่านี้หรือไม่?
128 java  jvm 

10
ฉันจะทราบได้อย่างไรว่า JVM ของฉันใช้ที่เก็บคีย์ใด
ฉันต้องการนำเข้าใบรับรองไปยังที่เก็บคีย์ JVM ของฉัน ฉันใช้สิ่งต่อไปนี้: keytool -import -alias daldap -file somecert.cer ดังนั้นฉันอาจต้องเปลี่ยนคำเรียกของฉันเป็น: keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
125 java  jvm  keytool 

5
Java ใช้หน่วยความจำมากกว่าขนาดฮีป (หรือขนาดที่ถูกต้อง จำกัด หน่วยความจำ Docker)
สำหรับแอปพลิเคชันของฉันหน่วยความจำที่ใช้โดยกระบวนการ Java นั้นมากกว่าขนาดฮีปมาก ระบบที่คอนเทนเนอร์กำลังทำงานอยู่เริ่มมีปัญหาหน่วยความจำเนื่องจากคอนเทนเนอร์ใช้หน่วยความจำมากกว่าขนาดฮีปมาก ขนาดฮีปตั้งไว้ที่ 128 MB ( -Xmx128m -Xms128m) ในขณะที่คอนเทนเนอร์ใช้หน่วยความจำสูงสุด 1GB ภายใต้สภาวะปกติต้องใช้ 500MB หากคอนเทนเนอร์นักเทียบท่ามีขีด จำกัด ด้านล่าง (เช่นmem_limit=mem_limit=400MB) กระบวนการจะถูกฆ่าโดยนักฆ่าหน่วยความจำที่ไม่เพียงพอของระบบปฏิบัติการ คุณช่วยอธิบายได้ไหมว่าทำไมกระบวนการ Java ถึงใช้หน่วยความจำมากกว่าฮีป วิธีปรับขนาดขีด จำกัด หน่วยความจำ Docker ให้ถูกต้อง มีวิธีลดรอยเท้าหน่วยความจำนอกฮีปของกระบวนการ Java หรือไม่? ผมรวบรวมรายละเอียดบางอย่างเกี่ยวกับปัญหาการใช้คำสั่งจากการติดตามหน่วยความจำพื้นเมืองใน JVM จากระบบโฮสต์ฉันได้รับหน่วยความจำที่คอนเทนเนอร์ใช้ $ docker stats --no-stream 9afcb62a26c8 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET …
119 java  linux  docker  memory  jvm 

6
ความแตกต่างระหว่าง“ java -cp” และ“ java -jar”?
อะไรคือความแตกต่างระหว่างการเรียกใช้แอปพลิเคชัน Java กับjava -cp CLASSPATHและjava -jar JAR_FILE_PATH? หนึ่งในนั้นเป็นที่ต้องการสำหรับการเรียกใช้แอปพลิเคชัน Java หรือไม่ ฉันหมายถึงวิธีใดต่อไปนี้ที่มีราคาแพงกว่าสำหรับ JVM (ตามการใช้ทรัพยากรเครื่อง) ข้อใดจะทำให้ JVM เกิดเธรดมากขึ้นในขณะที่พยายามเรียกใช้แอปพลิเคชัน
118 java  jar  jvm  classpath 

30
Android java.exe เสร็จสิ้นด้วยค่าการออกที่ไม่ใช่ศูนย์ 1 [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันได้ลองดูสิ่งที่คล้ายกันแล้วและไม่มีวิธีแก้ปัญหาใด ๆ ก่อนหน้านี้ฉันใช้งานแอพโดยไม่มีปัญหา แต่จู่ๆแอพใหม่ของฉันก็เริ่มทำให้ฉันมีปัญหา มันมักจะล้มเหลวเมื่อฉันพยายามเรียกใช้โดยพูดว่า: Error:Execution failed for task ':app:preDexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files (x86)\Java\jdk1.7.0_67\bin\java.exe'' finished with non-zero exit value 1 นี่คือสิ่งที่คอนโซลแสดง: Executing tasks: [:app:assembleDebug] Configuration on demand is an incubating feature. :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:compileDebugNdk UP-TO-DATE :app:checkDebugManifest …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.