vm本地存储无法访问
1. VMware vSAN分布式存储安装配置
在进行VMware vSAN分布式存储的安装配置时,首先要了解环境信息。管理地址包括AD和vCenter,如192.168.1.254和192.168.1.200,而ESXi主机分布在192.168.1.201至192.168.1.204,且每个主机需配置一个用于数据传输的VSAN vmkernel端口,建议使用至少1G,推荐10G以太网络。
组建VSAN集群需3-8个主机,这里使用4个ESXi主机。每个ESXi主机至少需一块SSD和一块机械硬盘,且是本地存储,独立安装ESXi系统。配置两块专用网卡用于vSAN网络,如vmotion、VSAN和管理网络共享。
在vCenter中,依次添加ESXi主机,输入IP、用户和密码,验证SSL证书,分配许可证书(评估模式),并可启用主机锁定模式。指定虚拟机的清除位置,完成四个主机的添加。
接下来配置vSAN网络,选择VMkernel适配器,启用vMotion,添加网络标签并输入内部通信IP,配置完成后,为其他主机重复。模拟SSD时,需手动指定硬盘为SSD。创建集群时,选择“手工”模式,分配许可证,创建磁盘组,并指定SSD作为数据缓存和数据磁盘。
应用虚拟机存储策略,创建策略并选择存储磁盘组。在创建虚拟机时,选择存储策略并确保其合规。最后,测试VSAN功能,如vmotion迁移和HA恢复,确保数据的冗余和灾备能力。
2. 在新建虚拟机时出现问题
JConsole
JConsole 图形用户界面是一种符合 java 管理扩展(JMX)规范的监视工具。JConsole 使用 Java 虚拟机 (Java VM) 的广泛检测来提供有关在 Java 平台上运行的应用程序的性能和资源消耗的信息。
使用方法 本地
使用jconsole命令:监视本地运行的所有 Java 应用程序,JConsole 可以连接到这些应用程序。
使用jconsole PID命令:监视指定PID的Java应用程序。
- 获取java PID的方法:通过任务管理器查看、通过Java提供的jps命令查看。远程
概述:显示有关 Java VM 和受监视值的概述信息。
内存:显示有关内存使用的信息。
线程:显示有关线程使用的信息。
类:显示有关类加载的信息。
VM:显示有关 Java VM 的信息。
MBeans:显示有关 MBeans 的信息。
- 组成部分 概览
伊甸园空间(堆):最初为大多数对象分配内存的池。
幸存者空间(堆):包含在伊甸园空间垃圾回收中幸存下来的物体的池。
终身代(堆):包含在幸存者空间中存在一段时间的对象的池。
永久生成(非堆):包含虚拟机本身的所有反射数据的池,如类和方法对象。使用类数据共享的 Java VM,这一代分为只读和读写区域。
代码缓存(非堆):HotSpotJava VM 还包括一个代码缓存,其中包含用于编译和存储本机代码的内存。
- 堆和非堆内存
堆内存是Java VM为所有类实例和数组分配内存的运行时数据区域。堆的大小可能是固定的或可变的。垃圾回收器是一个自动内存管理系统,用于回收对象的堆内存。
非堆内存包括所有线程之间共享的方法区域和Java VM的内部处理或优化所需的内存。它存储每类结构,如运行时常量池、字段和方法数据,以及方法和构造函数的代码。方法区域在逻辑上是堆的一部分,但是,根据实现,Java VM 可能不会对它进行垃圾回收或压缩。与堆内存一样,方法区域可能为固定大小或可变大小。方法区域的内存不需要连续。
- 内存池和内存管理器
内存池表示Java VM管理的内存区域。Java VM至少有一个内存池,它可能会在执行期间创建或删除内存池。内存池可以属于堆内存或非堆内存。
内存管理器管理一个或多个内存池。垃圾回收器是一种内存管理器,负责回收不可到达的对象使用的内存。Java VM可能具有一个或多个内存管理器。它可以在执行期间添加或删除内存管理器。内存池可以由多个内存管理器管理。
- 垃圾回收
它们创建许多寿命较短的对象,例如迭代器和局部变量。
它们创建一些寿命很长的对象,例如高级持久对象。
- 线程
查找监视器死锁线程:检测对象监视器锁上是否有任何线程死锁。此操作返回死锁线程指示的数组。
getThreadInfo:返回线程信息。这包括线程当前被阻止的名称、堆栈跟踪和监视器锁(如果有)以及持有该锁的线程以及线程争用统计信息。
获取ThreadCpu时间:返回给定线程消耗的 CPU 时间
class:显示有关类加载器行为的统计信息。
compiler:显示有关Java HotSpot VM实时编译器行为的统计信息。
gc:显示有关垃圾回收堆行为的统计信息。
gccapacity:显示有关几代人容量及其相应空间的统计信息。
gccause:显示有关垃圾回收统计信息(与 相同)的摘要,以及最后和当前(如果适用)垃圾回收事件的原因。-gcutil
gcnew:显示新一代行为的统计信息。
gcnewcapacity:显示有关新一代大小及其相应空间的统计信息。
gcold:显示有关旧一代和元空间统计信息行为的统计信息。
gcoldcapacity:显示有关旧一代大小的统计信息。
gcmetacapacity:显示有关元空间大小的统计信息。
gcutil:显示有关垃圾回收统计信息的摘要。
printcompilation:显示 Java 热点 VM 编译方法统计信息。
-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应用程序的底层虚拟机,这是一种常见惯例。
pid对应jvm的进程id
executable core产生core mp文件
[server-id@]remote server IP or hostname远程的ip或者hostname,server-id标记服务的唯一性id
no option输出全部的参数和系统属性
-flag name输出对应名称的参数
-flag [+|-]name开启或者关闭对应名称的参数
-flag name=value设定对应名称的参数
-flags输出全部的参数
-sysprops输出系统属性
- 注意:jinfo虽然可以在java程序运行时动态地修改虚拟机参数,但并不是所有的参数都支持动态修改
built-in变量
it -- 当前的迭代元素
index -- 当前迭代元素的索引
array -- 被迭代的数组
built-in变量
lhs -- 左边元素
rhs -- 右边元素
pid:目标进程的PID,进程编号,可以采用ps -ef | grep java查看java进程的PID;
executable:产生core mp的java可执行程序;
core:将被打印信息的core mp文件;
remote-hostname-or-IP:远程debug服务的主机名或ip;
server-id:唯一id,假如一台主机上多个远程debug服务;
jmap -mp:[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没有相应的时候使用-mp或者-histo参数。在这个模式下,live子参数无效。
-h | -help打印辅助信息
-J传递参数给jmap启动的jvm.
- jstack
-F强制mp线程堆栈信息. 用于进程hung住,jstack命令没有响应的情况
-m同时打印java和本地(native)线程栈信息,m是mixed mode的简写
-l打印锁的额外信
- 作者:楚瑞涛 https://blog.csdn.net/cong____cong/article/details/106349866
使用jsconsole hostName:portNum命令:hostName是运行应用程序的系统的名称,portNum是您在启动Java VM时启用 JMX 代理时指定的端口号。
使用service:jmx::命令:使用 JMX 服务 URL 进行连接。
内容分析
将 JConsole 连接到应用程序后,JConsole 由六个选项卡组成。
显示有关 CPU 使用情况、内存使用情况、线程计数和在Java VM中加载的类的图形监视信息。
提供执行GC的操作,可以随时点击按钮进行垃圾回收
Java VM管理两种类型的内存:堆内存和非堆内存,这两种内存都是在 Java VM 启动时创建的。
内存池和内存管理器是Java VM内存系统的关键方面。
垃圾回收 (GC) 是Java VM释放不再引用的对象占用的内存的方式。通常认为具有活动引用为"活动"且未引用(或无法访问)对象的对象为"已死"。垃圾回收是释放死对象使用的内存的过程。GC 使用的算法和参数对性能有显着影响。
Java hotspot VM垃圾回收器使用代数 GC。生成 GC 利用大多数程序符合以下概括的观察。
提供有关线程使用的信息。
显示有关类加载的信息。
提供有关Java VM的信息。
以通用方式显示有关在平台 MBean 服务器注册的所有 MBeans 的信息。MBeans 选项卡允许您访问平台 MXBean 检测的完整集,包括在其他选项卡中不可见的仪器。此外,您还可以使用 MBeans 选项卡监视和管理应用程序的 MBeans。
列出目标系统上已检测的 Java 虚拟机 (JVM)。
监视 Java 虚拟机 (JVM) 统计信息。
对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。
命令格式
jstat [-option] [PID]
option参数
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
使用方法
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应用程序的配置信息
命令格式
参数说明
option
Javacore 概述
Javacore,也可以称为“threadmp”或是“javamp”,它是 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:修改指定参数的值。
5.jinfo -flags pid:输出全部的参数
6.jinfo -sysprops pid:输出当前 jvm 进行的全部的系统属性
jhat
主要是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。
1.使用jmap命令导出堆文件jmap -mp:live,file=a.log pid
也可以使用下面方式导出堆文件
1、使用jconsole选项通过HotSpotDiagnosticMXBean从运行时获得堆转储(生成mp文件)、
2、虚拟机启动时如果指定了-XX:+HeapDumpOnOutOfMemoryError选项, 则在抛出OutOfMemoryError时, 会自动执行堆转储。
3、使用hprof命令
2.使用jhat分析堆文件jhat -J-Xmx512M a1.log
3.查看分析的html页面
http://ip:7000/jhat中的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对象
(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")
(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
使用方法
jstack命令主要用于调试java程序运行过程中的线程堆栈信息,可以用于检测死锁,进程耗用cpu过高报警问题的排查。jstack命令会打印出所有的线程,包括用户自己启动的线程和jvm后台线程。
命令格式
jstack -[option] pid
option
公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!
最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!
(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!
------ 特别推荐 ------
特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,“大咖笔记”,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。
文章有帮助的话,在看,转发吧!
3. 黑莓8700g 错误代码
在BLACKBERRY黑莓手持设备上java虚拟机可能出现的错误代码和详细信息101 Previous startup failed
当jvm启动过程中,前一个启动的项目失败了,设备已经被重置。这个错误表明jvm在启动时找到“启动进行中”这个标志位已经设置了,当前屏幕信息为:有意停止“系统继续重置”这个死循环,来纠正系统当前不正确的启动操作
102 Invalid code in filesystem
在文件系统中发现无效的代码。手持设备的系统检查.cod文件的变动时,在一些.cod文件中检测到这个问题。他肯可能是表明生成过程中发生了错误,即在cod文件中存在一个有问题的签名。如果一些用户操作设备导致这个问题的发生,文件系统的代码被破坏,复位的周期将是连续循环的。唯一的恢复方法是擦去设备并且恢复一个新的系统。
103 Cannot find starting address
找不到启动的地址,用于启动系统的引导cod文件找不到。这个错误表明一个用于引导系统的cod文件没有安装到设备上,或者格式不正确。
104 Uncaught: <Java-type-name>
非预期:《java模块名》jvm诊断出一个非预期的java代码异常错误抛出,程序可以继续执行,或者手持设备可以用桌面管理器连是USB线安装一个程序调试器来查看这些错误信息。事件日志里应该包含了异常错误的信息
105 Example, DbRecSize
举例,DbRecSize文件系统API已经为一种特定的操作返回一种错误状态码,他可能表明在jvm上存在一个无效的或者错误的文件系统
106 Graphics system error
图形系统错误,在设备的图形系统里一个错误发生并被检测到
107 operator new() called
在jvm里,操作new()回调一个c++类,该函数代码没有被正确的从VMRamObject对象来继承,新操作符需要被正确的继承。提取当前的(-后复位)的BUGDISP
108 operator delete() called
在jvm里,操作delete
()回调一个c++类,,该函数代码没有被正确的从VMRamObject对象来继承,新操作符需要被正确的继承。提取当前的(-后复位)的BUGDISP
109 PriorityMessageCount error: <priority-count>
优先级统计信息计算错误:
<优先级计算>当它应该总大于或者等于零时,RimPriorityMessageCount返回的值是负的。这表明在系统中这是一个错误。
提取当前(-后复位)的BUGDISP和查看系统事件记录
110 Non-idle event downtime error: <down-time> <idle-down-time>
非空闲状态时间事件错误:<时间> <空闲时间>在jvm空闲时间统计时检测到一个错误,代表JVM空闲了很长时间。
这通常表明在手持设备或者JVM中发生一个错误。如果计数器空闲了400天以上的设备时间,他也可能出现。
111 Font engine error
字体引擎错误:一个系统设备的字体引擎错误检测到。请查看当前的BUGDISP和事件日志
112 Java Native Assertion Failure
Java本地化实例失败。一个本地化代码错误检测到。请查看当前的BUGDISP和事件日志
200 应用程序管理器抛出一个非预期的线程异常错误,程序无法继续执行。重新复位手持设备。
201 Crypto initialization code failed
Crypto初始化代码失败。Crypto模块初始化失败手持设备无法继续
202 在密匙存储上检测到一个破解攻击行为,程序无法继续
203 Console process died
控制台进程死亡。应用程序管理器控制台进程已经挂起。这看起来非常象执行程序时发生异常错误的现象
204 Persistent Content Exception
本地内存内容异常。一个应用程序试图提交一个文本对象到本地内存里。这个情况将仅仅发生在:如果内容保护服务打开了,然后一个进程试图保存一些文本标记数据在本地内存里。当这个异常没有被正确处理过,可能说明本地内存已经处于损坏的状态。我们需要重设和回滚到最后正常状态的提交点。说明:这个jvm异常反映了在Java代码里有一个错误的地方,Jvm仅仅只是简单的诊断这个错误。如果这不是jvm的问题,那么事件日志将包含足够的Java代码错误信息。
300-303 Bad load
无效的加载持续,运行应用程序加载器重新给手持设备加载操作系统和应用程序
310-314 Hardware failure
硬件错误。尝试硬复位手持设备:关机,拿掉电池,等待一会儿,换掉电池看看设备重新启动时会出现什么状况,或者运行应用程序加载器重新给手持设备加载操作系统和应用程序。注意:如果这些办法没有解决这个错误,请联系你的服务提供商
320-325 AMX failure
AMX 失败。请运行应用程序加载器重新给手持设备加载操作系统和应用程序
330-339 Application tasks failure
应用程序任务失败。请运行应用程序加载器重新给手持设备加载操作系统和应用程序
340-343 Memory failure
内存错误。您可能看到手持设备报告如下错误代码:
Device Error 340
Device Error 341
Device Error 342
Device Error 343
原因:内存错误
解决:减少你手机里日历约会同步的个数
1、在桌面管理器里,双击Intellisync图标,点击配置PIM按钮
2、在设备应用程序列表中,选择日历
3、点击配置,高级设置,
4、在数据范围选项页,完成其中的一个任务来减少你手机里日历约会同步的个数,如果你选择了“调度最佳未来项目选择”的选项,手持设备仅仅只是同步未来的日历约会,如果你点击并输入了一个日期范围的调度项目选项,手持设备仅仅只是同步在选择日期范围内的日历计划约会.
5、点击OK保存改变,关闭窗口
6、在配置窗口,确定日历程序的复选框选择了,点击OK
7、在Intellisync窗口,确认同步PIM复选框已经选择了,然后点击立即同步。设备会减少至少一个以上的日历约会项目。
如果你仍然看到这个错误信息。请运行应用程序加载器重新给手持设备加载操作系统和应用程序
350-359 Software application failure
应用程序软件错误,您可能看到手持设备报告如下错误代码:
Device Error 350
Device Error 352
Device Error 353
Device Error 354
Device Error 355
Device Error 356
Device Error 357
Device Error 358
Device Error 359
原因:应用程序软件错误
解决方案:尝试硬复位手持设备,运行应用程序加载器重新给手持设备加载操作系统和应用程序。在向导窗口,不要选择任何第三方应用程序。在高级选项里,选择清除当前所有已安装的应用程序复选框。
360-363 Flash memory failure
Flash内存错误。尝试硬复位手持设备,运行应用程序加载器重新给手持设备加载操作系统和应用程序。
365-368 This one is often followed by “OHHH @%!!”
这是一个经常跟随 “OHHH @%!!”出现的错误,请联系服务提供商
395 Unclassified error code
未分类的错误代码
原因:
设备395代码表明是一个未分类的错误代码。手持设备安装了第三方应用程序可能导致了这个错误产生
解决方案1
尝试硬复位手持设备:关机,拿掉电池,等待一会儿,换掉电池看看设备重新启动时会出现什么状况
解决方案2
清除和重新加载手持设备的数据
1、在黑莓桌面管理器里,用备份和还原工具创建你的手机的数据备份文件。如需更多信息,请参考桌面管理器在线帮助里的“手持设备备份信息”。警告:下面的步骤可能清除手持设备的数据
2、打开桌面管理器,双击应用程序加载器图标
3、单击下一步,出现应用程序选择窗口
4、确认必须的应用程序已经选择了,点击下一步
5、点击“高级”
6、选择“清除所有的应用程序数据和当前已经安装的应用程序”玄虚,点击下一步
7、点击完成。当手持设备的操作系统和应用程序重新加载时,手持设备的数据被清除,
8、使用备份和还原工具从备份的数据文件还原到手持设备中,如需更多信息,请参考桌面管理器在线帮助里的“手持设备还原信息”。
400-564 Page faults
页面文件失效。运行应用程序加载器重新给手持设备加载操作系统和应用程序
410 Radio failure
无线电服务失败。
尝试硬复位手持设备,运行应用程序加载器重新给手持设备加载操作系统和应用程序。注意:如果这样都没有解决这个错误,请请联系服务提供商
Error:411=电池模块问题,更换电池
Error:499=软件问题,重启手持设备.
501 VM_THREAD_SWITCHED
线程已经被切换,内部错误,这是在VM中被内部使用的一个错误返回信息。它应该从会不报告为一个设备错误代码。
502 VM_PROCESS_DEATH
进程已死(挂起),所有的进程已经退出,最后一个java进程已被终止,没有任何程序可以执行
503 VM_THREAD_DEATH
线程已死(挂起),内部错误,这是在VM中被内部使用的一个错误返回信息。它应该从不会报告为一个设备错误代码
504 VM_THREAD_SWITCH
线程已经被切换,内部错误,这是在VM中被内部使用的一个错误返回信息。它应该从不会报告为一个设备错误代码
505 VM_BAD_CODE5 I
无效的代码:无效字节代码,在Jit编译器里发生一个错误
506 Uncaught Exception
未知的异常:在初始化VM的java线程的时候一个未知的java异常被抛出,导致了系统被迫结束了唯一活动的线程。事件日志包含了异常的回滚记录!
507 Unsatisfied Link
在cod文件里有不合适的文件链接关联,可能丢失了cod文件,(原文的英文是如此)
Device Error 5059
Device Error 5077
手持设备没有安装任何应用程序
原因1
当应用程序加载器工作时,黑莓设备上存在的应用程序已经被清除,但应用程序加载器加载新的应用程序时失败了
解决方案
1、确认你的电脑上已经正确安装了设备软件
2、请直接将您的黑莓设备直接连接到一台笔记本电脑的USB接口处
3、如果第三方程序(如:杀毒软件)已经使用了和桌面管理器手持设备的相同的COM端口,关闭第三方程序来释放COM端口
4、如果你使用USB数据线链接黑莓设备到你的电脑的串口,请用USB端口直接链接bb
5、在桌面管理器里,双击应用程序加载器
6、用应用程序加载器安装设备系统软件
原因2
如果你输入密码错误超过10次,你bb上所有的数据和程序都会被清除
解决
1、在桌面管理器里,双击应用程序加载器
2、用应用程序加载器安装设备系统软件
508 Invalid object
无效的对象,当vm执行一个调试器命令时检测到一个问题:无效的对象
509 VM_PPO_INFINITE_LOOP
在垃圾手机的PPO阶段中发现死循环,在GC的PPO阶段中,最大的迭代总数必须是系统中的文件句柄的最大数字。这个错误表明这个迭代总数已经超过这个数,因而在PPO循环中或者不正确的文件系统中出现了一个瑕疵。在错误字符串中可以提取到一个特别的16进制整数值,是当前检测到的死循环记录的id值
510 Deadlock
死锁,所有的线程对象都在等待,但一个线程返回结果时已经死锁了。系统不能从这个死锁状态中恢复,因为所有的线程都被锁定了。
511 Debug connection died
调试器连接已经死锁,当调试的时候,vm的问题或者不正确的调试命令发送给vm时,可能导致这个问题发生
512 GC Aborted
GC(垃圾收集)已经终止,空间垃圾收集器程序被用户操作事件强制终止了,诸如挤压键盘或者移动滚轮操作
513 <clinit> needs running
<clinit>类需要先运行。此类名<clinit>能继续执行之前要求执行一个opcode,。
514 <init> needs running
<init>需要运行。一个新的类实例在使用之前必须通过默认构造函数初始化和分配内存空间。
515 Object group too big
对象组太大。jvm不能正确的获得对象组,不是因为对象太多就是因为对象组太大
516 Persistent ids exhausted
ids固件设备衰竭。当访问一个固件对象时,jvm发现这个本地内存id计数器已经达到最大限制。对象不能被提交,同时报告一个致命的错误。这个错误可能从不会发生,除非这个设备大量使用了数年之久。
517 Filesystem corrupt
文件系统不正确。在jvm本地内存里检测到一个错误(矛盾)的分配地址
518 Unexpected longjmp5
意外的longjmp指令。一个垃圾收集器指令方面结束了一个longjmp指令。这可能表明当指令没有中断即将完成操作时,这个标记阶段被这个错误中断了。这个情况应该从不会发生,因为当设备非空闲的时候,这些操作会被执行,同时,
仅仅当设备空闲时,垃圾收集器的工作才会被中断
519 Internal Error
内部服务器错误。Jvm系统丢失或者被禁止
520 Internal Return
内部返回一个错误,表明一个java方法返回的一种内部的状态需要执行
521 Dangerous Wait An Object
一个危险的等待对象。一个线程执行Wait()方法时被另外一个对象锁定。这个仅仅在基于jvm的模拟器里控制调试应用程序切换时才会检查
522 Interlaced synchronization
交互式同步错误,对象的线程已经通过一个命令获得了2个锁定,但是,这2个已经取得的锁定类型并不匹配线程被锁定之前的命令。这表明一个即将发生潜在的死锁情况被报告。这个仅仅在基于jvm的模拟器里控制调试应用程序切换时才会检查
523 System process died
系统进程已死(挂起)。一个致命的java程序错误导致系统已经被终止,设备无法继续正常的操作,请复位重新启动手持设备。
524 LMM error
LMM错误。一个对象被低内存管理器作了回收标记,但内存垃圾收集时他没有被正确释放。这个仅仅在基于jvm的模拟器里控制调试应用程序切换时才会检查
525 Bad persistent object
损坏的本地内存对象。当垃圾收集期间,从本地内存根目录检测到一个自动操作提交到了一个非持久本地对象,这个类型的对象已经记录到事件日志里了
526 java.lang.Object not found
类定义java.lang.Object对象未找到。
527 java.lang.String not found
类定义java.lang.String对象未找到
528 –529 Corrupt filesystem
错误的文件系统。不可恢复的错误,继续执行的话将会导致所有数据丢失。这个错误信息包含了内部“错误原因”的数字代码。如果删除了一个cod文件,这个错误不会诊断出来,因为JVM
必须删除(在已经删除了的)COD 文件中被定义的对象,因此,在设备正常操作时这个错误不会产生
jvm编译器常见错误代码
1.根数组引用不是有效的数组引用
2.根数组类型不是Object[]
3.根数组大小小于1,如Object[0]
4. root[0]里的内存不是有效的引用
5. root[0]类型不是一个长整型哈希表
6.数组头部段包含一个无效的引用
7. 在本地Object[]的一个项目中包含一个无效的引用
8.一个对象类型引用了一个未知的cod文件
9.在内存里,一个cod文件中的对象的类型描叙文件大小不匹配
10. 一个对象里面有一个无效的类型字段引用
11.对象中一个引用的类型字段链接到了另一对象的无效类型
12.在描叙符中一个本地Object[]丢失!
13.在本地内存中对象没有被标记为persis表
14.根数组被分割,一个分隔段无效
530 VM_PREVENT_GC_OVERFLOW
_preventGC 溢出。原始对象的固定值会被保护起来防止被垃圾收集器收走。这个错误表明,
数值可能超出了被保护对象的固定的极限。如果设备被重置或者线程回滚事件被记录,这个实际的数值可以提取出来。
531 Flash exhausted
内存已经耗尽用完。jvm无法容许超出内存空间的某些操作。如果jvm无法完成分配需要的内存空间大小,将会报告这个错误
532 VM_ASSERTION_FAILED
维护任务失败。通常,当设备没有启动允许维护状态时,这个jvm错误一般不会被报告,模拟器在调试状态时可能会报告这个错误,表明一个vm维护操作违反了约定。可以尝试输入BKPT来激活调试器,然后转储这个本地堆栈转交给vm组
533 VM_RUN_METHOD
<method>方法需要使用国际标准的ECMAScript脚本调用方法才能运行
534 VM_FAST_RESET_DISABLED
快速复位被禁止。内部过去经常用这个代码表示快速复位能力是无效的。请经常使用平台制定的代码
535 VM_UNUSED_535
未使用的vm错误。错误535意味着内存溢出。导致535错误的一个原因可能是一个运行的线程内存溢出,导致虚拟内存线程计划任务程序终止了。这个错误是已知的,发生在一个启动的队列期间,或如果主事件线程被停止了。
解决方案:
首先,硬启动手持设备。如果不能解决问题,从你的载体获得并安装最新版的黑莓手持设备ROM软件,然后,运行桌面管理器里的应用程序加载器更新手持设备。或者删除一些铃声和主题文件等等以释放存储空间
536 VM_FAST_RESET_BAD_INSTANCE
vm快速复位实例检查失败。内部过去经常用这个代码表示:vm结构跳过了错误的地址空间或者vm已经被破坏了
537 VM_FAST_RESET_BAD_HEAP
快速复位错误,堆检查失败。内部过去经常用这个代码表示:vm堆已经无效了,或者指针堆已经无效
538 VM_FAST_RESET_BAD_IRAM
快速复位IRAM损害,IRAM检查失败。内部过去经常用这个代码表示:vm的IRAM检查中检测到寄存在IRAM中无效的vm数据结构(线程+本地堆栈),或者指针
539 VM_FAST_RESET_NOT_IDLE
快速复位状态非空闲。内部过去经常用这个代码表示:当复位发生时vm正忙,类似这样的问题导致快速复位无法继续
540 VM_FAST_RESET_MULTIPLE_RESETS
多重复位错误。内部过去经常用这个代码表示:最近一次复位的时间小于最小复位时间间隔。由于禁止了短时间内多重复位次数,这个可以防止快速复位的死循环
541 VM_HEAP_COMPACT_INFINITE_LOOP
在堆压缩中检测到死循环。Vm在内存堆里检测到一个问题,表明这个内存块是无效的。当进行内存堆压缩时,在确认一个可能的死循环时这个问题可以被检测到,当设备包含了这个错误条件时,bugdisp记录和事件日志可以快速提取这个错误信息。如果可能的话,内存映像将会保存下来。
542 Transient memory leak
瞬间内存泄露。Jvm检测到某些内存没有被释放,这表明发生了内存泄露。希望原因能够尽早检测出来,避免这个情况的发生
543 VM_FS_MISMATCH
文件系统不匹配。安装了不兼容的java文件系统。Jvm检测到现有的系统代码和经常用于创建java文件系统的系统代码有不同。这意味着java本地方法可能没有被正确的编译链接,所以,不能肯定系统的完整性。系统无法通过使用vm
DLFX和DLPS命令恢复,也不能删除或修理本地内存的错误。这可能清除所有的数据和固件内容,请重新链接编译文件系统,才能匹配新的系统代码。恢复顺序非常
重要:1.删除应用程序,2.删除本地内存内容,3.复位设备
544 VM_SECTION_MAP_OVERFLOW
一个模块引用超过了255个其他模块。Vm检测到一个模块试图引用超过了255个其他的模块。当错误检测到的时候,文件系统应该立即获取到该错误
545 VM_INCOMPATIBLE_FILESYS
Vm检测到一个不兼容的或无效的文件系统存在。当错误检测到的时候,文件系统应该立即获取到该错误
546 VM_UNUSED_546
未使用(的内部错误代码)。Vm检测到文件系统中的内存映像是无效的(CRC冗余检查失败),重新复位机器好过复制错误的内存
内容
547 VM_UNUSED_547
未使用(的内部错误代码)。Vm错误
548 VM_UNUSED_548
未使用(的内部错误代码)。Vm错误
549 VM_UNUSED_549
未使用(的内部错误代码)。Vm错误