Jvm知识学习(三)-常用JVM配置参数

    一,Trace跟踪参数 
   -verbose:gc
  -XX:+printGC
  可以打印GC的简要信息
  [GC 4790K->374K(15872K), 0.0001606 secs]
  [GC 4790K->374K(15872K), 0.0001474 secs]
  [GC 4790K->374K(15872K), 0.0001563 secs] 
  [GC 4790K->374K(15872K), 0.0001682 secs]

  -XX:+PrintGCDetails
  打印GC详细信息
  -XX:+PrintGCTimeStamps
  打印CG发生的时间戳
   [GC[DefNew: 4416K->0K(4928K), 0.0001897 secs] 4790K->374K(15872K), 0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

-  Xloggc:log/gc.log 
指  定GC log的位置,以文件输出
   帮助开发人员分析问题

  -XX:+PrintHeapAtGC 
-  每次一次GC后,都打印堆信息

 -XX:+TraceClassLoading
  监控类的加载
   [Loaded java.lang.Object from shared objects file]
   [Loaded java.io.Serializable from shared objects file]
   [Loaded java.lang.Comparable from shared objects file]
   [Loaded java.lang.CharSequence from shared objects file]
   [Loaded java.lang.String from shared objects file]
   [Loaded java.lang.reflect.GenericDeclaration from shared objects file]
   [Loaded java.lang.reflect.Type from shared objects file]
 
  -XX:+PrintClassHistogram
  –按下Ctrl+Break后,打印类的信息:

–分别显示:序号、实例数量、总大小、类型
   
   二,堆的分配参数

   -Xmx –Xms
   指定最大堆和最小堆
  -Xmn
  设置新生代大小
  -XX:NewRatio
  新生代(eden+2*s)和老年代(不包含永久区)的比值
  4 表示 新生代:老年代=1:4,即年轻代占堆的1/5
  -XX:SurvivorRatio
  设置两个Survivor区和eden的比
  8表示 两个Survivor :eden=2:8,即一个Survivor占年轻代的1/10
 
  例1:

     -Xmx20m -Xms20m -Xmn1m  -XX:+PrintGCDetails

     -1,没有触发GC

     -2,全部分配在老年代

     例2:

     -Xmx20m -Xms20m -Xmn15m  -XX:+PrintGCDetails

    1. 没有触发 GC
    2. 部分配在 eden
    3. 老年代没有使用
  
     例3:

     -Xmx20m -Xms20m –Xmn7m-XX:+PrintGCDetails

     1.进行了2次新生代GC

     2.s0 s1 太小要老年代担保

     
     例4:

     -Xmx20m -Xms20m -Xmn7m   -XX:SurvivorRatio=2 -XX:+PrintGCDetails

     
     例5:

     -Xmx20m -Xms20m -XX:NewRatio=1  

     -XX:SurvivorRatio=3 -XX:+PrintGCDetails

     
     -XX:+HeapDumpOnOutOfMemoryError
     OOM时导出堆到文件
     -XX:+HeapDumpPath
     导出OOM的路径
     -Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump
      Vector v=new Vector();
        for(int i=0;i<25;i++)
            v.add(new byte[1*1024*1024]);
      

    -XX:OnOutOfMemoryError
     在OOM时,执行一个脚本
     "-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“
      当程序OOM时,在D:/a.txt中将会生成线程的dump
可   以在OOM时,发送邮件,甚至是重启程序

  总结:
  根据实际事情调整新生代和幸存代的大小
  官方推荐新生代占堆的3/8
  幸存代占新生代的1/10 
  在OOM时,记得Dump出堆,确保可以排查现场问题
  
  永久区参数分配:
  -XX:PermSize -XX:MaxPermSize
  设置永久区的初始空间和最大空间
   他们表示,一个系统可以容纳多少个类型
  

三,栈的分配参数
-Xss
通常只有几百K
决定了函数调用的深度
每个线程都有独立的栈空间
局部变量、参数 分配在栈上

示例:栈内存,分配越大,递归调用的次数越多(跟函数的局部变量占用的内存也有关系)


深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值