vm虛拟機怎麼調端口号(vmware虛拟機端口)

biang 中華百科 1.0K+

本文目錄

  1. vm虛拟機橋接以後在虛拟機内撥号提示651怎麼解決
  2. vm虛拟機端口轉發不生效
  3. 在新建虛拟機時出現問題

vm虛拟機橋接以後在虛拟機内撥号提示651怎麼解決

錯誤代碼651意思為

調制解調器(或其它連接設備)報告了一個錯誤。既未找到指定的端口。

解決辦法:

1、遠程訪問記事簿文件和當前的“網絡和撥号連接”配置可能不一緻如果更改了通訊設備(例如:串行口或調制解調器),請确保重新配置“網絡和撥号連接”。如果錯誤仍然存在,請删除并重新創建“網絡和撥号連接”.

2、win7錯誤代碼651,路由能上,撥号上不了

試一下:打開\windows\system32\logfiles\wmi,雙擊打開wmi再打開裡面的RtBackup會提示你需要管理員權限繼續重啟,即可修複。

3、不行的話把wmi裡的後綴為etl的文件删除包括RtBackup裡的重啟

4、如果上面的都不管用的話那嘗試一下,禁用本地連接-關機-檢查貓的所有插頭拔下重插-拔下貓的電源插頭-等待2分鐘之後插上插頭-開機。

5、最後一招先從别的能上網的系統的機子裡複制下面這個文件 c:\windows\system32\drivers\raspppoe.sys來替換你電腦裡的這個文件。寬帶連接錯誤678(遠程計算機沒響應)的處理流程如下:

步驟一:檢查MODEM信号燈是否正常,不正常重新啟動modem。如果正常見步驟二。

步驟二:詢問用戶是否有防火牆或3721上網助手等軟件,如有則建議用戶退出

(1)防火牆及3721上網助手後測試:如果故障解決,故障原因為“用戶軟件問題”;

(2)如果故障依舊存在,則進入下一步繼續處理;

步驟三:指導用戶檢查網卡狀态并拔插網線:

(1)如果故障解決,則填寫:故障原因為“pc硬件問題”;

(2)如果故障依舊存在,則進入下一步繼續處理;

步驟四:在條件具備情況下(用戶有撥号軟件、安裝光盤(Win98要備有網卡驅動盤)建議用戶删除撥号軟件及,再重新安裝網卡驅動後安裝撥号軟件:

(1)如果故障解決,則填寫:故障現象為“撥号連接超時”,故障原因為“PC硬件問題”;

(2)如果故障依舊存在,則進入步驟七繼續處理;

步驟五:判斷MODEM後面電話線是否可用,分離器連接是否正确:

(1)MODEM後連電話不能使用,而計費号的其他電話可以使用的,建議更換電話線,故障原因為“用戶室内線故障”;

(2)如果用戶家計費号的所有電話都不可以使用的,則請撥打客服電話10000電信(10060網通/10050鐵通)進行障礙申告。

步驟六:以上處理均無效或用戶無法做簡單的配合操作,則請撥打客服電話10000電信(10060網通/10050鐵通)進行障礙申告。

vm虛拟機端口轉發不生效

1、虛拟機的網絡設置不正确。在虛拟機的設置中,需要将網絡設置為NAT模式,并且啟用端口轉發,在NAT模式下,虛拟機的網絡連接是通過宿主機的網絡連接來實現的,因此需要設置端口轉發,以便将虛拟機的網絡流量轉發到宿主機上。

2、端口轉發規則設置不正确。在虛拟機的網絡設置中,需要設置端口轉發規則,将虛拟機的端口映射到宿主機的端口上,如果設置的端口不正确,或者映射關系不正确,可能會導緻端口轉發不生效。

3、防火牆設置不正确。宿主機和虛拟機都可能存在防火牆,如果防火牆設置不正确,可能會阻止虛拟機的網絡流量通過宿主機的網絡連接,需要檢查防火牆設置,并确保虛拟機的網絡流量能夠通過防火牆。

在新建虛拟機時出現問題

JConsole

JConsole圖形用戶界面是一種符合 Java管理擴展(JMX)規範的監視工具。JConsole使用 Java虛拟機(Java VM)的廣泛檢測來提供有關在 Java平台上運行的應用程序的性能和資源消耗的信息。

使用方法本地

使用jconsole命令:監視本地運行的所有 Java應用程序,JConsole可以連接到這些應用程序。

使用jconsole PID命令:監視指定PID的Java應用程序。

獲取java PID的方法:通過任務管理器查看、通過Java提供的jps命令查看。遠程

使用jsconsole hostName:portNum命令:hostName是運行應用程序的系統的名稱,portNum是您在啟動Java VM時啟用 JMX代理時指定的端口号。

使用service:jmx::命令:使用 JMX服務 URL進行連接。

内容分析

将 JConsole連接到應用程序後,JConsole由六個選項卡組成。

概述:顯示有關 Java VM和受監視值的概述信息。

内存:顯示有關内存使用的信息。

線程:顯示有關線程使用的信息。

類:顯示有關類加載的信息。

VM:顯示有關 Java VM的信息。

MBeans:顯示有關 MBeans的信息。

組成部分概覽

顯示有關 CPU使用情況、内存使用情況、線程計數和在Java VM中加載的類的圖形監視信息。

提供執行GC的操作,可以随時點擊按鈕進行垃圾回收

伊甸園空間(堆):最初為大多數對象分配内存的池。

幸存者空間(堆):包含在伊甸園空間垃圾回收中幸存下來的物體的池。

終身代(堆):包含在幸存者空間中存在一段時間的對象的池。

永久生成(非堆):包含虛拟機本身的所有反射數據的池,如類和方法對象。使用類數據共享的 Java VM,這一代分為隻讀和讀寫區域。

代碼緩存(非堆):HotSpotJava VM還包括一個代碼緩存,其中包含用于編譯和存儲本機代碼的内存。

堆和非堆内存

Java VM管理兩種類型的内存:堆内存和非堆内存,這兩種内存都是在 Java VM啟動時創建的。

堆内存是Java VM為所有類實例和數組分配内存的運行時數據區域。堆的大小可能是固定的或可變的。垃圾回收器是一個自動内存管理系統,用于回收對象的堆内存。

非堆内存包括所有線程之間共享的方法區域和Java VM的内部處理或優化所需的内存。它存儲每類結構,如運行時常量池、字段和方法數據,以及方法和構造函數的代碼。方法區域在邏輯上是堆的一部分,但是,根據實現,Java VM可能不會對它進行垃圾回收或壓縮。與堆内存一樣,方法區域可能為固定大小或可變大小。方法區域的内存不需要連續。

内存池和内存管理器

内存池和内存管理器是Java VM内存系統的關鍵方面。

内存池表示Java VM管理的内存區域。Java VM至少有一個内存池,它可能會在執行期間創建或删除内存池。内存池可以屬于堆内存或非堆内存。

内存管理器管理一個或多個内存池。垃圾回收器是一種内存管理器,負責回收不可到達的對象使用的内存。Java VM可能具有一個或多個内存管理器。它可以在執行期間添加或删除内存管理器。内存池可以由多個内存管理器管理。

垃圾回收

垃圾回收(GC)是Java VM釋放不再引用的對象占用的内存的方式。通常認為具有活動引用為"活動"且未引用(或無法訪問)對象的對象為"已死"。垃圾回收是釋放死對象使用的内存的過程。GC使用的算法和參數對性能有顯著影響。

Java hotspot VM垃圾回收器使用代數 GC。生成 GC利用大多數程序符合以下概括的觀察。

它們創建許多壽命較短的對象,例如叠代器和局部變量。

它們創建一些壽命很長的對象,例如高級持久對象。

線程

提供有關線程使用的信息。

查找監視器死鎖線程:檢測對象監視器鎖上是否有任何線程死鎖。此操作返回死鎖線程指示的數組。

getThreadInfo:返回線程信息。這包括線程當前被阻止的名稱、堆棧跟蹤和監視器鎖(如果有)以及持有該鎖的線程以及線程争用統計信息。

獲取ThreadCpu時間:返回給定線程消耗的 CPU時間

顯示有關類加載的信息。

提供有關Java VM的信息。

以通用方式顯示有關在平台 MBean服務器注冊的所有 MBeans的信息。MBeans選項卡允許您訪問平台 MXBean檢測的完整集,包括在其他選項卡中不可見的儀器。此外,您還可以使用 MBeans選項卡監視和管理應用程序的 MBeans。

列出目标系統上已檢測的 Java虛拟機(JVM)。

監視 Java虛拟機(JVM)統計信息。

對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。

命令格式

jstat [-option] [PID]

option參數

class:顯示有關類加載器行為的統計信息。

compiler:顯示有關Java HotSpot VM實時編譯器行為的統計信息。

gc:顯示有關垃圾回收堆行為的統計信息。

gccapacity:顯示有關幾代人容量及其相應空間的統計信息。

gccause:顯示有關垃圾回收統計信息(與相同)的摘要,以及最後和當前(如果适用)垃圾回收事件的原因。-gcutil

gcnew:顯示新一代行為的統計信息。

gcnewcapacity:顯示有關新一代大小及其相應空間的統計信息。

gcold:顯示有關舊一代和元空間統計信息行為的統計信息。

gcoldcapacity:顯示有關舊一代大小的統計信息。

gcmetacapacity:顯示有關元空間大小的統計信息。

gcutil:顯示有關垃圾回收統計信息的摘要。

printcompilation:顯示 Java熱點 VM編譯方法統計信息。

1.jstat–class:顯示加載class的數量,及所占空間等信息。

2.jstat-compiler顯示VM實時編譯的數量等信息。

3.jstat-gc:可以顯示gc的信息,查看gc的次數,及時間。

4.jstat-gccapacity:可以顯示,VM内存中三代(young,old,perm)對象的使用和占用大小

5.jstat-gcutil:統計gc信息

6.jstat-gcnew:年輕代對象的信息。

7.jstat-gcnewcapacity:年輕代對象的信息及其占用量。

8.jstat-gcold:old代對象的信息。

9.jstat-gcoldcapacity: old代對象的信息及其占用量。

10.jstat-gcpermcapacity: perm對象的信息及其占用量。

11.jstat-printcompilation:當前VM執行的信息。

監視 Java虛拟機(JVM),并使遠程監視工具能夠連接到 JVM

命令格式

jstatd-[option]

option

-nr當找不到現有的RMI注冊表時,不嘗試使用jstatd進程創建一個内部的RMI注冊表。

-p port在指定的端口查找RMI注冊表。如果沒有找到,并且沒有指定-nr選項,則在該端口自行創建一個内部的RMI注冊表。

-n rminameRMI注冊表中綁定的RMI遠程對象的名稱。默認的名稱為JStatRemoteHost。如果多個jstatd服務器在同一主機上運行,你可以通過指定該選項來讓每個服務器導出的RMI對象具有唯一的名稱。不管如何,這樣做需要将唯一的服務器名稱包含進監控客戶端的hostid和vmid字符串中。

-Joption将選項參數傳遞給被javac調用的java啟動程序。例如,-J-Xms48m設置啟動内存為48 MB。使用-J将選項參數傳遞給執行Java應用程序的底層虛拟機,這是一種常見慣例。

使用方法

1.在jdk的bin目錄下創建文件jstatd.all.policy

2.寫入下面的安全配置

grant codebase"file:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/lib/tools.jar"{

permission java.security.AllPermission;

#此處寫絕對路徑,主要是防止路徑錯誤問題,排查問題,應該寫成相對路徑

3.啟動jstatd

./jstatd-J-Djava.security.policy=jstatd.all.policy-J-Djava.rmi.server.hostname=x.x.x.x&

4.使用jvisualvm工具遠程連接,進行監控

jvisualvm

VisualVM,能夠監控線程,内存情況,查看方法的CPU時間和内存中的對象,已被GC的對象,反向查看分配的堆棧(如100個String對象分别由哪幾個對象分配出來的).

同時他還提供很多插件可以自己安裝,是一款不錯的監控分析工具。

故障排除工具 JInfo

可以用來查看正在運行的 java應用程序的擴展參數,包括Java System屬性和JVM命令行參數;也可以動态的修改正在運行的 JVM一些參數。當系統崩潰時,jinfo可以從core文件裡面知道崩潰的Java應用程序的配置信息

命令格式

參數說明

pid對應jvm的進程id

executable core産生core dump文件

[server-id@]remote server IP or hostname遠程的ip或者hostname,server-id标記服務的唯一性id

option

no option輸出全部的參數和系統屬性

-flag name輸出對應名稱的參數

-flag [+|-]name開啟或者關閉對應名稱的參數

-flag name=value設定對應名稱的參數

-flags輸出全部的參數

-sysprops輸出系統屬性

Javacore概述

Javacore,也可以稱為“threaddump”或是“javadump”,它是 Java提供的一種診斷特性,能夠提供一份可讀的當前運行的 JVM中線程使用情況的快照。即在某個特定時刻,JVM中有哪些線程在運行,每個線程執行到哪一個類,哪一個方法。應用程序如果出現不可恢複的錯誤或是内存洩露,就會自動觸發 Javacore的生成。

使用方法

1.jinfo pid:輸出當前 jvm進程的全部參數和系統屬性

2.jinfo-flag name pid:輸出對應名稱的參數使用該命令,可以查看指定的 jvm參數的值。如:查看當前 jvm進程是否開啟打印 GC日志。

3.jinfo-flag [+|-]name pid:開啟或者關閉對應名稱的參數

使用 jinfo可以在不重啟虛拟機的情況下,可以動态的修改 jvm的參數。尤其在線上的環境特别有用。

4.jinfo-flag name=value pid:修改指定參數的值。

注意:jinfo雖然可以在java程序運行時動态地修改虛拟機參數,但并不是所有的參數都支持動态修改

5.jinfo-flags pid:輸出全部的參數

6.jinfo-sysprops pid:輸出當前 jvm進行的全部的系統屬性

jhat

主要是用來分析java堆的命令,可以将堆中的對象以html的形式顯示出來,包括對象的數量,大小等等,并支持對象查詢語言。

1.使用jmap命令導出堆文件jmap-dump:live,file=a.log pid

也可以使用下面方式導出堆文件

1、使用jconsole選項通過HotSpotDiagnosticMXBean從運行時獲得堆轉儲(生成dump文件)、

2、虛拟機啟動時如果指定了-XX:+HeapDumpOnOutOfMemoryError選項,則在抛出OutOfMemoryError時,會自動執行堆轉儲。

3、使用hprof命令

2.使用jhat分析堆文件jhat-J-Xmx512M a1.log

3.查看分析的html頁面

中的OQL(對象查詢語言)

如果需要根據某些條件來過濾或查詢堆的對象,這是可能的,可以在jhat的html頁面中執行OQL,來查詢符合條件的對象

基本語法:

select

[from [instanceof] ]

[where ]

解釋:

(1)class name是java類的完全限定名,如:java.lang.String,java.util.ArrayList, C是char數組,java.io.File是java.io.File[]

(2)類的完全限定名不足以唯一的辨識一個類,因為不同的ClassLoader載入的相同的類,它們在jvm中是不同類型的

(3)instanceof表示也查詢某一個類的子類,如果不明确instanceof,則隻精确查詢class name指定的類

(4)from和where子句都是可選的

(5)java域表示:obj.field_name;java數組表示:array[index]

舉例:

(1)查詢長度大于100的字符串

select s from java.lang.String s where s.count> 100

(2)查詢長度大于256的數組

select a from [I a where a.length> 256

(3)顯示匹配某一正則表達式的字符串

select a.value.toString() from java.lang.String s where/java/(s.value.toString())

(4)顯示所有文件對象的文件路徑

select file.path.value.toString() from java.io.File file

(5)顯示所有ClassLoader的類名

select classof(cl).name from instanceof java.lang.ClassLoader cl

(6)通過引用查詢對象

select o from instanceof 0xd404d404 o

built-in對象-- heap

(1)heap.findClass(class name)--找到類

select heap.findClass("java.lang.String").superclass

(2)heap.findObject(object id)--找到對象

select heap.findObject("0xd404d404")

(3)heap.classes--所有類的枚舉

select heap.classes

(4)heap.objects--所有對象的枚舉

select heap.objects("java.lang.String")

(5)heap.finalizables--等待垃圾收集的java對象的枚舉

(6)heap.livepaths--某一對象存活路徑

select heaplivepaths(s) from java.lang.String s

(7)heap.roots--堆根集的枚舉

辨識對象的函數

(1)classof(class name)--返回java對象的類對象

select classof(cl).name from instanceof java.lang.ClassLoader cl

(2)identical(object1,object2)--返回是否兩個對象是同一個實例

select identical(heap.findClass("java.lang.String").name, heap.findClass("java.lang.String").name)

(3)objectid(object)--返回對象的id

select objectid(s) from java.lang.String s

(4)reachables--返回可從對象可到達的對象

select reachables(p) from java.util.Properties p--查詢從Properties對象可到達的對象

select reachables(u,"java.net.URL.handler") from java.net.URL u--查詢從URL對象可到達的對象,但不包括從URL.handler可到達的對象

(5)referrers(object)--返回引用某一對象的對象

select referrers(s) from java.lang.String s where s.count> 100

(6)referees(object)--返回某一對象引用的對象

select referees(s) from java.lang.String s where s.count> 100

(7)refers(object1,object2)--返回是否第一個對象引用第二個對象

select refers(heap.findObject("0xd4d4d4d4"),heap.findObject("0xe4e4e4e4"))

(8)root(object)--返回是否對象是根集的成員

select root(heap.findObject("0xd4d4d4d4"))

(9)sizeof(object)--返回對象的大小

select sizeof(o) from [I o

(10)toHtml(object)--返回對象的html格式

select"+ toHtml(o)+"" from java.lang.Object o

(11)選擇多值

select{name:t.name?t.name.toString():"null",thread:t} from instanceof java.lang.Thread t

數組、叠代器等函數

(1)concat(enumeration1,enumeration2)--将數組或枚舉進行連接

select concat(referrers(p),referrers(p)) from java.util.Properties p

(2)contains(array, expression)--數組中元素是否滿足某表達式

select p from java.util.Properties where contains(referres(p),"classof(it).name=='java.lang.Class'")

返回由java.lang.Class引用的java.util.Properties對象

built-in變量

it--當前的叠代元素

index--當前叠代元素的索引

array--被叠代的數組

(3)count(array, expression)--滿足某一條件的元素的數量

select count(heap.classes(),"/java.io./(it.name)")

(4)filter(array, expression)--過濾出滿足某一條件的元素

select filter(heap.classes(),"/java.io./(it.name)")

(5)length(array)--返回數組長度

select length(heap.classes())

(6)map(array,expression)--根據表達式對數組中的元素進行轉換映射

select map(heap.classes(),"index+'-->'+ toHtml(it)")

(7)max(array,expression)--最大值, min(array,expression)

select max(heap.objects("java.lang.String"),"lhs.count>rhs.count")

built-in變量

lhs--左邊元素

rhs--右邊元素

(8)sort(array,expression)--排序

select sort(heap.objects('[C'),'sizeof(lhs)-sizeof(rhs)')

(9)sum(array,expression)--求和

select sum(heap.objects('[C'),'sizeof(it)')

(10)toArray(array)--返回數組

(11)unique(array)--唯一化數組

jmap

打印進程、核心文件或遠程調試服務器的共享對象内存映射或堆内存詳細信息。

jmap [option]

(to connect to running process)連接到正在運行的進程

jmap [option]

(to connect to a core file)連接到核心文件

jmap [option] [server_id@]

(to connect to remote debug server)連接到遠程調試服務

option

pid:目标進程的PID,進程編号,可以采用ps-ef| grep java查看java進程的PID;

executable:産生core dump的java可執行程序;

core:将被打印信息的core dump文件;

remote-hostname-or-IP:遠程debug服務的主機名或ip;

server-id:唯一id,假如一台主機上多個遠程debug服務;

使用方法

jmap-dump:[live,]format=b,file= PID:使用hprof二進制形式,輸出jvm的heap内容到文件

jmap-finalizerinfo PID:打印正等候回收的對象的信息

jmap-heap PID:打印heap的概要信息,GC使用的算法,heap(堆)的配置及JVM堆内存的使用情況。

jmap-histo:live PID:打印每個class的實例數目,内存占用,類全名信息。VM的内部類名字開頭會加上前綴”*”.如果live子參數加上後,隻統計活的對象數量.

jmap-permstat PID:打印classload和jvm heap長久層的信息.包含每個classloader的名字、活潑性、地址、父classloader和加載的class數量。另外,内部String的數量和占用内存數也會打印出來。

-F強迫.在pid沒有相應的時候使用-dump或者-histo參數。在這個模式下,live子參數無效。

-h|-help打印輔助信息

-J傳遞參數給jmap啟動的jvm.

jstack

jstack命令主要用于調試java程序運行過程中的線程堆棧信息,可以用于檢測死鎖,進程耗用cpu過高報警問題的排查。jstack命令會打印出所有的線程,包括用戶自己啟動的線程和jvm後台線程。

命令格式

jstack-[option] pid

option

-F強制dump線程堆棧信息.用于進程hung住,jstack命令沒有響應的情況

-m同時打印java和本地(native)線程棧信息,m是mixed mode的簡寫

-l打印鎖的額外信

作者:楚瑞濤

公衆号“Java精選”所發表内容注明來源的,版權歸原出處所有(無法查證版權的或者未注明出處的均來自網絡,系轉載,轉載的目的在于傳遞更多信息,版權屬于原作者。如有侵權,請聯系,筆者會第一時間删除處理!

最近有很多人問,有沒有讀者交流群!加入方式很簡單,公衆号Java精選,回複“加群”,即可入群!

(微信小程序):3000+道面試題,包含Java基礎、并發、JVM、線程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架構設計等,在線随時刷題!

------特别推薦------

特别推薦:專注分享最前沿的技術與資訊,為彎道超車做好準備及各種開源項目與高效率軟件的公衆号,「大咖筆記」,專注挖掘好東西,非常值得大家關注。點擊下方公衆号卡片關注。

文章有幫助的話,在看,轉發吧!