虚拟机

探索OutOfMemoryError与StackOverflowError

烂漫一生 提交于 2020-02-14 06:03:06
本文的目的有两个:1.OutOfMemoryError与StackOverflowError异常在哪个区域发生,2.解决问题的思路;因工作中发现团队的好多人知道一堆定位工具,但对于定位思路模糊不清,不知道所报异常具体问题在哪里胡乱分析,效率低下,故而总结下文。 一、OutOfMemoryError异常 1.1 Java堆(-Xmx -Xms) 1.1.1标识: java.lang.OutOfMemoryError:heap space(比较常见) 1.1.2产生的原因:1.内存泄漏(Memory Leak) 2.内存溢出(Memory OverFlow) 1.1.3定位手段:可以通过参数-XX:+HeapDumpOnOutOfMemoryError让虚拟机在出现内存异常的时候Dump出当前内存堆转存快照以便进行事后分析。 内存泄漏:查看泄漏对象到GC Roots的引用链,找到泄漏对象是通过什么引用路径、与那些GC Roots想关联,才导致垃圾回收器无法回收他们。 内存溢出:对象是必须存在的,得检查Java虚拟机的堆参数(-Xmx -Xms)设置,与机器的内存对比,看看是否还有向上调整的空间。再从代码上检查是否存在某些生命周期过长的对象,持有状态时间过长,存储设计不合理等情况,尽量减小程序运行的情况。 1.2虚拟机栈与本地方法栈 当虚拟机栈允许动态扩展

虚拟机设备“VMnet0”上的网桥没有运行。没有未桥接的主机网络适配器。

℡╲_俬逩灬. 提交于 2020-02-14 01:56:29
问题描述 :虚拟机设置“网络适配器”,选择“网络连接”为“桥接模式”,出现错误提示,如图: 产生原因 :之前卸载过虚拟机,没卸干净,导致新装的虚拟机没有虚拟网卡,如图: 解决办法 :1.先在控制面板卸载虚拟机;2.接着在C盘Program Files(或者Program Files(x86))搜索vm,删掉虚拟机卸载残留;3.终极卸载:网上下载ccleaner,通过ccleaner清除卸载残留,如图: 这下终于卸干净了!重新安装虚拟机,问题解决。 希望我的解决办法能够帮到你!如有疑问,欢迎留言! 来源: CSDN 作者: java2min 链接: https://blog.csdn.net/java2min/article/details/104301035

Virtualbox源码分析23 NEM(Hyper-V兼容)4 VMExit

可紊 提交于 2020-02-14 00:26:19
Native execution manager (VMExit) 文章目录 Native execution manager (VMExit) 23.1 EPT内存管理 23.1.1分配内存 23.1.2 Unmap内存 23.1.3 修改内存属性和页面Map关系 23.2 VMExit处理 nemHCWinStopCpu nemHCWinHandleMessage nemHCWinCopyStateFromX64Header nemHCWinHandleMessageMemory nemHCWinHandleMessageIoPort nemHCWinHandleMessageInterruptWindow nemHCWinHandleMessageCpuId nemHCWinHandleMessageMsr nemHCWinHandleMessageException nemHCWinHandleMessageUnrecoverableException 本篇重点介绍NEM模式的处理VMExit的函数,基本框架和HM/Raw-mode完全一样,只是具体实现代码(调用的API)不同而已。 23.1 EPT内存管理 NEM内存管理,NEM模式的内存管理和HM模式的内存管理方法一样,EPT表也是由PGM维护,只不过当EPT表修改的之后(分配EPT内存,释放EPT内存

JVM参数配置

心不动则不痛 提交于 2020-02-13 20:45:52
新生代配置 新生代大小配置参数的优先级: 高: -XX:NewSize/MaxNewSize 中间 -Xmn ( NewSize= MaxNewSize ) 低: -XX:NewRatio 表示比例,例如 =2 ,表示 新生代:老年代 = 1:2 -XX:SurvivorRatio 表示 Eden 和 Survivor 的比值, 缺省为 8 表示 Eden:From Survivor:ToSurvivor= 8:1:1 同样的代码情况下: -Xms20M -Xmx20M -XX:+PrintGCDetails –Xmn2m -XX:SurvivorRatio=2 没有垃圾回收 数组都在老年代 -Xms20M -Xmx20M -XX:+PrintGCDetails -Xmn7m -XX:SurvivorRatio=2 发生了垃圾回收 新生代存了部分数组,老年代也保存了部分数组,发生了晋升现象 -Xms20M -Xmx20M -XX:+PrintGCDetails -Xmn15m -XX:SurvivorRatio=8 新生代可以放下所有的数组 老年代没放 -Xms20M -Xmx20M -XX:+PrintGCDetails -XX:NewRatio=2 发生了垃圾回收 出现了空间分配担保,而且发生了 FullGC JDK 为我们提供的工具 jps 列出当前机器上正在运行的虚拟机进程

VM15上安装macOS操作系统

落爺英雄遲暮 提交于 2020-02-13 20:40:13
因为要开学了,需要学习mac操作系统,自己没有苹果电脑只能虚拟机上下载喽 我在电脑上安装的VM15虚拟机,不会安装的可以来这里下载软件 VM15虚拟机 这是官网,可以参考别的教程安装一下,安装的时候会出现各种各样的问题,都可以给我留言,尽量帮你解决 我用的是VM15.5版本的虚拟机,算是比较新的,不同的虚拟机接下来用到工具不同,建议用VM15 首先需要下载 mac镜像: macOS镜像 提取码:aax9 unlock破解工具: 破解工具地址 (以为VM虚拟机默认是不带着苹果的版本,不信你试试)提取码:2mdu VM15.5虚拟机 : 虚拟机 (可以从网上下载,也可以用我的)提取码:02zk 注意所有文件的下载路径不能有中文(unlock工具安装到vmware下,我也不知道不安装这里能不,反正安装在这里能) 开始安装 首先要安装VM15.5不再截图细讲 接下来安装unlock破解工具 首先打开服务,把VM开头的都关掉 右键,停止 这些服务都停止之后打开我们的unlock文件夹,找到win-install.cmd 右键管理员运行 之后你会下载一些东西,这里非常的慢(我是开了关关了开好几次,就好啦,建议你等等,等不及了在关了开) 打开虚拟机,选择文件,新建虚拟机 下一步 浏览找镜像 选择,他会提示你,没有关系,继续往下进行 选择Apple Mac OS X(M)下的macOS 10.13

windows关闭hyper-v

这一生的挚爱 提交于 2020-02-13 11:11:19
windows开启hyper-v时vbox虚拟机功能会受影响,此时需要关闭hyper-V cmd或poweroff以管理员身份(!!!!!!)运行bcdedit,如果没有hypervisorlaunchtype行或者hypervisorlaunchtype行值不为off,运行bcdedit /set hypervisorlaunchtype off并重启,重启后启动vbox即正常 来源: https://www.cnblogs.com/arisnotargon/p/12302487.html

JVM探秘:内存溢出

人盡茶涼 提交于 2020-02-13 10:30:25
在 Java 虚拟机内存区域中,除了程序计数器外,其他几个内存区域都可能会发生OutOfMemoryError,这次通过一些代码来验证虚拟机各个内存区域存储的内容。 在实际工作中遇到内存溢出异常时,需要做到能根据异常信息快速判断是哪个内存区域的溢出,知道什么样的代码会导致这些区域内存溢出,并且知道出现内存溢出后如何处理。 Java堆溢出# Java 堆用于存储对象实例,只要不断的扩展对象,并且保证 GC Roots 到对象有可达路径来避免垃圾回收,那么对象数量到达堆的最大容量后就会发生内存溢出异常。 模拟堆内存溢出# 以下代码会把堆大小限制在20M且不可扩展(将最小参数-Xms和最大参数-Xmx设为相同就会避免自动扩展),通过参数-XX:+HeapDumpOnOutOfMemoryError可以让虚拟机在发生内存溢出时Dump出内存快照用来分析。 参数 说明 -XX:+HeapDumpOnOutOfMemoryError 内存溢出时自动导出内存快照 -XX:HeapDumpPath=E:/dumps/ 导出内存快照时保存的路径 Copy /** * Java堆内存溢出异常 * VM args: -Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError * -Xms和-Xmx设为相同值避免堆内存自动扩展, * -XX:

failed to load the jni shared library bin client jvm.dll

牧云@^-^@ 提交于 2020-02-13 10:30:02
原因往往是系统环境变量参数设置的java虚拟机位数和当前启动的eclipse所需的java虚拟机位数不匹配,比如一个是64位,另一个是32位 怎么查看java虚拟机位数,如图: 这是32位的虚拟机版本信息,最后一行java HotSpot(TM).....可以查看 对比下图64位: 以上两图对比可以看出不同虚拟机位数的信息 如何查看eclipse启动需要的虚拟机版本 在当前使用的eclipse下的eclipse.ini里,如下截图: 以上的64位的eclipse,对比下图32位的来看看有何不同: 对比发现后面的后缀,64位的多了字符串“_64”,32位则没有 如何配置eclipse单独启动的虚拟机 在当前使用的eclipse下的eclipse.ini里设置参数如下: -vm D:/JavaIDE/jdk/jdk1.8.0_60/jre/bin/server/jvm.dll(设置成这个eclipse能够启动的虚拟机) 以上就是所有,这样可以不用更改系统全局的环境变量,来满足eclipse的启动需要。 来源: https://www.cnblogs.com/kinder/p/12302382.html

docker结构与命令

主宰稳场 提交于 2020-02-13 02:21:21
1. docker与虚拟机的区别优点 docker可以完成虚拟机可以完成的所有功能,并且Vm所有虚拟机在创建的时候会虚拟独立的系统内核,而docker所有的虚拟机共用主机的系统内核,节约了虚拟环境系统部署的资源,将更好的性能提供给了应用,所以docker占用资源小,比虚拟机开启更快,更方便。 虚拟机的Guest层,还有Hypervisor层在Docker上已经被Docker Engine层所取代,在这里我们需要知道,Guest OS 是虚拟机安装的操作系统,是一个完整的系统内核,另外Hypervisor可以理解为硬件虚拟化平台,它在后Host OS以内核驱动的形式存在。 2.docker结构与组成 客户端服务端模式可单机可分布式部署 服务端负责docker镜像的构建,运行,发布. 2.1 The Docker daemon 接收Docker API请求和管理docker的对象例如镜像、容器、网络、存储卷等, 也可以和其他的Docker daemon通信管理docker的service 2.2 The Docker client 可以和多个daemon进行通信,发送指令给daemon, 用户和daemon交互主要方式。 2.3 Docker registries 存储docker镜像,Docker Cloud是一个公共仓库,是docker默认的仓库。 可以搭建私有仓库。 docker

JVM原理与内存模型

北城以北 提交于 2020-02-13 02:20:34
编译型语言:一次性地编译成机器码,生成可执行文件。 解释型语言:使用专门的解释器对源码逐行解释成特定平台的机器码并立即执行的语言。 JVM原理: Java语言既是编译型语言,又是解释型语言:Java源码通过javac命令被编译成.class文件,这种字节码文件不面向任何平台,只面向JVM(Java Virtual Machine);JVM是Java跨平台的关键部分,其向上提供给Java字节码程序的接口完全相同,而向下适应不同平台的接口则互不相同,为特定平台提供特定机器码,使用java命令解释执行。 JDK、JRE、JVM关系: JDK包括Java编译器,JRE和其它工具(如javaDoc、java调试器等);JRE包含JVM、类加载器、大量基础类库等。 内存模型: 1. 堆(Heap) 是Java虚拟机所管理的内存中最大的一块不连续的内存区域,也是被各个线程共享的内存区域,该内存区域存放了对象实例及数组(但不是所有的对象实例都在堆中),以及死亡的还未被回收的对象。其大小通过-Xms(初始值)和-Xmx(最大值)参数设置(都要小于1G),为了避免在运行时频繁调整Heap的大小,通常-Xms与-Xmx的值设成一样。堆内存 = 新生代+老生代(永久代不属于堆内存)。在我们垃圾回收的时候,我们往往将堆内存分成新生代和老生代(大小比例1:2),新生代中由Eden和Survivor0