主要是碰到了eclipse无法启动的问题。之前不知道怎么回事导致eclipse启动速度一次比一次慢,

百度了下开始改动eclipse.ini参数

也不知道改了啥。第二天直接起不来eclipse了。

于是花一上午 搞了一下这个

顺带记录一下堆内存和JVM虚拟内存的理解

堆(Heap)和非堆(Non-heap)内存 
按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 
虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。
简单来说堆就是Java代码可及的内存,是留给开发人员使用的;
非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法
的代码都在非堆内存中。 
堆内存分配:
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;
JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。
因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

非堆内存分配:
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;
由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

JVM内存限制(最大值) 
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。
简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说
Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

设置VM参数导致程序无法启动主要有以下几种原因: 
1) 参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize; 
2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。
说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

最后贴一下配置

-Xms256m

-Xmx1024m
-XX:PermSize=128M 
-XX:MaxPermSize=256M
-XX:ReservedCodeCacheSize=128m
-XX:+TieredCompilation
 

-startup
plugins/org.eclipse.equinox.launcher_1.5.100.v20180827-1352.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.800.v20180827-1352
-product
org.eclipse.epp.package.java.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=1.8
-Dosgi.dataAreaRequiresExplicitInit=true
-Xms256m
-Xmx1024m
--add-modules=ALL-SYSTEM

最新文章

  1. listbox鼠标拖动数据和为button注册快捷键
  2. java学习之协调同步的线程
  3. git基础入门之常用命令操作
  4. Jquery操作radio,checkbox,select表单操作实现代码
  5. android如何获取手机型号和版本号
  6. 嵌入式Linux LED小灯点亮实验
  7. Java出现“Error configuring application listener of class...”类似的错误解决
  8. asp.net core mvc剖析:mvc动作选择
  9. HTTPS协议入门
  10. selenium webdriver使用click一直失效问题的几种解决方法
  11. Python3 条件控制
  12. Python杂记
  13. matlab常用目录操作
  14. 个人博客制作如何选择前端模板 thinkcmf后台加载新模板 CSS js文件
  15. 谈谈 JAVA 的对象序列化
  16. 理解JS的执行环境
  17. 剑指offer(43)左旋转字符串
  18. sql 更新多条记录
  19. Mybatis ResultMap Collection 复合主键
  20. 374. Guess Number Higher or Lower 简单的二分法运用

热门文章

  1. docker jenkins 插件安装提速
  2. vue自定义指令导致的内存泄漏问题解决
  3. 在linux上安装运行安卓系统
  4. win10更改pip源
  5. matlab学习笔记12_2创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段
  6. Linux的.a、.so和.o文件 对比 window下的dll,lib,exe文件
  7. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器版本打包方法介绍
  8. Centos7基础之查看NETMASK,GATWAY,DNS小技巧
  9. python获取https并且写文件日志
  10. DockerFile语法【h】